02 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 03

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【Unity】AudioClipのサンプリングレートって変えられるんですね。 

こんにちは。
大坂です。

花粉があああああああああ!
薬を飲んでますが、鼻水が止まりませんorz

今週も小ネタ。なんか誰でも知ってるよねって感じですが!
音の容量を下げるために適当にフリーソフトを使用してサンプリングレート変えてたんですけど、
これUnityでも変えられんですねってだけの話なんですけど。

こんな設定。
Unityで音のファイルを選んで「Sample Rate Setting」-「Override Sample Rate」を指定


「Sample Rate」がでてくるのであとは変更したいのに変更するだけですね。


Imported Sizeも減ってビルドした後のapkのサイズもちゃんと減ります。
あとは音質との相談ですね!

一応簡単に変えられるということでネタもないので記事に…。

では今週もこれで…。
また来週ノシ
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】そういえばUnityでJSONって簡単に触れるの?どうなの? 数分後「簡単なんですけどぉー!」 JsonUtilityすごいぜ!って話 

おはようございます。
今日は朝から1日雨のようですね。
昼に歯医者があってチョーめんどい坂内っす。

そういえば今UnityでJSON使うの簡単らしいっすね?
でもどうなの?JSON触ったことないし!

ってことで、ちょっと気になったので触ってみました。

まずはJSONにあるデータ型についてです。
〇数値
〇文字列
〇真偽値
〇配列
〇オブジェクト
〇null

があるようです。
また、配列とオブジェクト(連想配列)は、ネスト(入れ子)構造で表現する事ができます。
まぁ根本はXMLとかと同じなんすよね?そうなの?

なんか適当にJSONを作ってみました。
{
"name":"よしだ",
"age":18
}


こんなのをUnityで読み込んでみましょう。
上記のテキストファイルをUTF-8で「test1.txt」という名前でResourcesフォルダの下に置きます。
※ちなみにはじめはJISだったんだけど、Unityで読み込んだら日本語取れなかったんで、UTFにしました。

まずは、Jsonで渡されるItemを格納する用クラスを生成します。
【users】
using System;

[Serializable]
public class users {
public string name;
public int age;
}


適当にテキストを1個用意して、以下のコードをCanvasでもCameraでもどっかに貼り付けます。



【JsonUtil】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class JsonUtil : MonoBehaviour {

public Text txtString;

void Start() {
TextAsset txtData = Resources.Load("Json/test1");
string textJson = txtData.text;

users item = JsonUtility.FromJson(textJson);

txtString.text = item.name + "\r\n" + item.age;
}
}


はーい!簡単!


出ました出ました。

JsonUtilityという素敵なAPIがUnity5.3から入ったようですね!

逆にJSONにするにはJsonUtility.ToJson()を使えばできるようです。

【JsonUtil】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class JsonUtil : MonoBehaviour {

public Text txtString;

void Start() {
TextAsset txtData = Resources.Load("Json/test1");
string textJson = txtData.text;

users item = JsonUtility.FromJson(textJson);

txtString.text = item.name + "\r\n" + item.age;
}

public void OnClickToJSON() {
users item = new users();
item.name = "はるしおん";
item.age = 4;

string json = JsonUtility.ToJson(item);
Debug.Log(json);
}
}


ボタンを押すとOnClickToJSONが呼ばれるようにして、上記コードを呼ぶとこんな感じ!



素晴らしいっすね!

でもこれってクラス(今回はusersクラスを用意)し、そのフィールドだけが対象になっています。
なので、しらないものがJSONに入っていると無視されるっぽいっす。
エラーが出ないだけましですよね!想定内の物のみを取得します。

これで色々とJSONのファイルをいじっていけますね!

そんな感じで、ネタがないので無理やり書いてみました!
あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】透過のある画像をボタンにしたときとかね。 

こんにちは。
大坂です。

お昼ご飯を食べたらものすごい勢いで気持ち悪くなりました。
何か盛られたんですかね…orz

あああ、ネタがありません。

世の中のすごい人が作ったやつを紹介です。

透過がある画像をボタンにしたときに透過したところを押させたくないときとかに使える奴。

RaycastMask.cs

使用する画像の設定で「Read/Write Enabled」
にチェックを入れないとエラーになるのでそこだけ注意点。

これね。


はい!
便利ですね!

今週もこれで終わり!
また来週ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】ポケガ2のローカライズが大変でごわす。今月中には英語版対応アップデートしちゃうよ? 

こんにちは、坂内っす。

最近はもっぱらポケットガール2のローカライズをやっているため、ネタがありません。

確実に今月中にはローカライズは終わってアップデートをすると思います。
ポケガ1は韓国語版を別アプリとしてリリースしましたが、今回のはアップデートでオプションにて切り替えができるようにしています。

それにしても数が多い・・・
翻訳してもらった文字数としては30万文字くらいになりました。
これ外の翻訳会社なんかにだしたら200万円以上する感じですもんね・・・そこは知り合いの人に頼んでお安くやってもらいましたよ!

基本の文章はシナリオ等のため、外部ファイル管理なのでそこまで大変じゃないんですが、各画面のボタン等が今は絵に文字(OKとか閉じるとか)が入っているため、1個1個のボタンの箇所にuGUIのTextを新たに置き、Localize用Textコンポーネントを付けて、日本語と英語の文字を設定という感じでやってます。

ボタンやらなにやらが多い多い( ノД`)シクシク…

これを踏まえて、次回のハクスラでは、はじめからローカライズ用のクラスを作って絵に文字は入れないようにしようと心に決めた今日この頃。

ただ、この方法だとちょっと不安要素もあるんですよね。
今まで絵(uGUIのImage)が1個しかなかった画面で、ImageとTextが複数という構成になっていくため、オブジェクト数が増えることです。
これによりメモリやらの必要量が増えて重くなったりしないかなぁというのが今の懸念材料です。
(ちなみに手持ちのスマホだと特に問題なかったです)

まぁ、その辺のローカライズ対応が終わっても、シナリオ等も英語にすると文字量が増えるため、枠からはみ出ないか等のチェック調整を全シナリオ分しないといけないんですけどね・・・・

という感じで、ローカライズは結構大変でございます。

ちなみにローカライズすることで、DL数が増えるのかは疑問ですが・・・・・半年前から知り合いにローカライズ頼んで、最近上がってきちゃったので、最後まで対応することにします!

そんなこんなで今日はこれにてお開き!あでゅ~ノシ

=================================================================================
うちのローカライズ方法
【Excel ScriptableObject対応】
http://halcyonsystemblog.blog.fc2.com/blog-entry-325.html

【uGUI Text Image対応】
http://halcyonsystemblog.blog.fc2.com/blog-entry-321.html

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】Mathf.Roundを使ったときの悲しみ 

こんにちは。
大坂です。

3月なのにまだ寒いです。
そして花粉症がやばいですorz

さて今週も小ネタ。
「Mathf.Round」とかあんまり使わないので四捨五入を適当に使ってやろうと思ったときに悲しかったことです。

 Mathf.Round(1.5f);
 ⇒2
Mathf.Round(2.5f);
 ⇒2


・・・!
なんか「.5」の時は偶数に寄せるんですね・・・orz
API見ても書いてました。
https://docs.unity3d.com/jp/540/ScriptReference/Mathf.Round.html
無念。

こんな感じで対策。
Mathf.Floor(1.5f + 0.5f);
 ⇒2
Mathf.Floor(2.5f + 0.5f);
 ⇒3


「0.5」を足して「Mathf.Floor」で小数点を切り捨ててます。
これで四捨五入の動きはできるので問題ないとは思います。

皆さんも「Mathf.Round」を使うときはお気をつけて!

今週もこれで終わりです!
また来週ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

こんぬつわ。UnityでAdmobの動画リワードを使う方法だよ。でもまだリワード終了のハンドラーとれてないの 

おはようございます。
もう3月ですねー
早いものです。

あ、坂内っす。

最近Admobさんが動画リワードを始めたよ!ってTLを見たので、導入方法ちょっと調べてみたよ。

あ、もちろんUnityでの方法ですけど。

まず、Admob側で動画リワードの広告枠を作ります。


次にこちらでAdmobのUnityPluginをおとしまーす。
https://github.com/googleads/googleads-mobile-unity/releases/tag/v3.0.3

パッケージになっているのでImportをしましょう。

Importが終わったら、こんな感じで動画を出すことができます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using admob;

public class Test : MonoBehaviour {

void Awake() {
Debug.Log("準備開始");
Admob.Instance().loadRewardedVideo("ca-app-pub-XXXXXXXXXXXXX/XXXXXXXXXXXXX");
}

public void OnClickShowVideo() {
if (Admob.Instance().isRewardedVideoReady()) {
Admob.Instance().rewardedVideoEventHandler += AdManager_rewardedVideoEventHandler;
Debug.Log("再生されるはずだが");
Admob.Instance().showRewardedVideo();
} else {
Debug.Log("準備されてないだと?");
}
}

void AdManager_rewardedVideoEventHandler(string eventName,string msg) {
Debug.Log("Event: " + eventName);
if (eventName == AdmobEvent.onRewardedVideoStarted) {
Debug.Log("リワード動画はじまったよ!");
}
if (eventName == AdmobEvent.onRewarded) {
Debug.Log("リワードもらえるよ!");
}
}
}


・・・のはずなんですが、動画は再生されても、リワード動画のイベントハンドラーが取れない・・・・
これ使い方間違ってますかね?(笑)

イベントが取れないんす・・・・・だれか正しいやり方おせーて!
この辺まで触ってるうちに俺のスマホがダメになってきて(ケーブルつなげてても充電がされないで、減る一方・・・ついに電池が切れて動かなくなりました)、これ以上試せません!

って感じで、Admobの動画は簡単に出ました。

そのうち、ちゃんとハンドラーとる方法追記したいと思います。

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】スプラッシュ機能使ったときの話【iOS】 

こんにちは。
大坂です。

早くも3月になりましたね…。
まだ微妙に寒い日が続いてますが皆様体調には気を付けてくださいませ。

さて今週も短いですけどさっそく。
ちょっと前にアプリを出したときにUnityのスプラッシュ機能を使ってスプラッシュを出して、
iOSの実機確認していた時にロゴの位置が微妙だったので変更したものをもう一回設定したときに嵌ったお話。

現象としてはこんな感じ。

※クリックすると見れます

なんか変更前ロゴが見えてから変更後のロゴが見えるという変な状況に。
特に解決策もわからずにUnityを設定を見直したり何回もビルドしなおしてみるとか色々やっても解決せず。
実機の方のアプリ削除してから入れなおしてみても直らない…。

でまぁしばらく嵌った後に何となく実機を再起動してみたら直りました。
実機のほうに変な情報が残ってしまうんですかね…。
単純なことで直ってよかったのですが、結構な時間嵌ってしまいましたorz

Unityのスプラッシュ機能を使っていて、ロゴを変更したいときなんかは気を付けてみてくださいませ。

では今週もこれで終わりです。
また来週ノシ

Category: 開発日記(Unity)

tb 0 : cm 0