(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


Audio Mixerの設定をプログラムで取得、変更する方法【Unity】【Audio Mixer】

この記事でのバージョン
Unity 6000.4.5f1


はじめに

以前、Audio SourceをBGMやSEなどのグループごとに管理するAudio Mixerを紹介しました。



今回はそのAudio Mixerの設定をプログラムで取得、変更する方法の紹介です!

Audio Mixerの設定をプログラムで取得、変更する方法

続きを読む

サウンドの音量やエフェクトを、BGMやSEなどのグループごとに管理出来るAudio Mixer 【Unity】【Audio Mixer】

この記事でのバージョン
Unity 6000.4.5f1


はじめに

UnityでBGMやSEを鳴らす時、基本的にAudio Sourceを使いますが、

Audio Sourceが増えてくると「BGMだけまとめて音量を下げたい」「SE全体にエフェクトをかけたい」

みたいな事が面倒になってきます。


今回はそんな時に便利なAudio Mixerの紹介です!


Audio Mixerを使うと、Audio Sourceをグループ分けして管理できるため、

例えばBGM用グループを作れば、BGM全体の音量を一括で変更できるようになります。

なお、Unityにデフォルトで入っている機能なので、特に導入は必要ありません。


Audio Mixerの使い方

続きを読む

Mathf.RoundToIntやRoundは四捨五入ではなく偶数丸め(銀行丸め)【Unity】【C#】

この記事でのバージョン
Unity 6000.4.5f1


はじめに

Unityで小数点を含む数字を一番近い整数にで変換したい時にMathf.RoundToIntがよく使われますが、

Debug.Log($"1.1をRoundToInt : {Mathf.RoundToInt(1.1f)}");
Debug.Log($"1.6をRoundToInt : {Mathf.RoundToInt(1.6f)}");


実はRoundToIntは(Roundも)四捨五入ではなく偶数丸め(銀行丸め)だというのが今回の話。


偶数丸め

続きを読む

UIに綺麗な影を付けるTrue Shadowはグロー(輝いてるような)っぽいエフェクトを付けたい時にも便利【Unity】【uGUI】【アセット】

この記事でのバージョン
Unity 6000.4.5f1


はじめに

以前、True ShadowというuGUIのテキストや画像に綺麗な影を追加出来るアセットを紹介しました。

True Shadow - UI Soft Shadow and Glow | GUI Tools | Unity Asset Store


その影の自然さは一目瞭然(左 : 影なし、中央 : Unity標準機能、右 : True Shadow)ですが、


グロー(輝いてるようなエフェクト)っぽいエフェクトを付けたい時にも便利というのが今回の話。



True Shadowでグロー(輝いてるような)っぽいエフェクトを付ける

続きを読む

Project Auditorでバージョンアップで廃止されるクラスやメソッド等(Obsolete API)を検出出来るように【Unity】【Project Auditor】【最適化】

この記事でのバージョン
Unity 6000.3.4f1


はじめに

以前、Unityプロジェクトを解析し、改善点を教えてくれるProject Auditorというツールを紹介しました。

(Unity6.4からはエディターに標準搭載)




そのProject Auditorにバージョンアップで廃止されるクラスやメソッド等である

Obsolete APIを検出する機能が追加されたので、今回はその紹介です!


なお、先に結論を書いておくと現状はそんなに使い道がなさそうな感じでした。

というのも、Obsolete APIの一覧は見れるものの全てを検出出来るわけではなく、

自動で修正も出来ない上に、Unity 6.4はまだ非対応とまだまだ出たばかりという感じだからです。


Obsolete APIの検出と一覧

続きを読む

Unityプロジェクトを解析し、改善点を教えてくれるProject Auditorが標準搭載に【Unity】【Project Auditor】【最適化】

この記事でのバージョン
Unity 6000.4.5f1


はじめに

以前、Unityプロジェクトを解析し、改善点を教えてくれるProject Auditorを紹介したのですが、

その時はUnityの人によって作られた物であるものの、Unity公式のサポートはない状態でした。



その後、Unity6.1から公式パッケージとしてサポートされるようになりました。

(まだパッケージを導入する必要があった)



そしてUnity6.4から、Project Auditorがエディターに標準搭載されるようになったので、

今回は改めて、ProjectAuditorの紹介記事です!



Project Auditor

続きを読む

英語などの日本語に比べて長くなりがちな言語で、テキストを範囲内に収める色々な方法【Unity】【uGUI】【ローカライズ】

この記事でのバージョン
Unity 6000.3.4f1



はじめに

ゲームを多言語対応していると、日本語では問題なく収まっていたテキストが、

英語など他の言語にした途端、長くなって収まらなくなる事がよくあります。


UnityのTextMeshProにはフォントサイズを自動で調整する機能があるため、


基本はそれを使ってフォントサイズを小さくすればいいのですが、

あまりにも長いと文字が小さくなりすぎてしまって読みにくくなってしまいます。


表示範囲に余裕があれば改行を自動で増やすという事も出来ますが、

(特にUIでは)表示範囲が限られてる事が多いので、その方法でも上手くいかないことも多いです。


ということで今回は、他の言語でテキストを範囲内に収める色々な方法の紹介です!


他の言語でテキストを範囲内に収める色々な方法

続きを読む

Unity Hub 3.18.0から、オリジナルのプロジェクトテンプレートが簡単に作れるように【Unity】

この記事でのバージョン
Unity Hub 3.18.0


はじめに

Unity Hubでは新規プロジェクトを作る際に、いくつかのテンプレートから選択が出来ます。


ここのテンプレートは基本的に公式が用意したもので、

自分用のオリジナルテンプレートを作ろうとすると今まではちょっと面倒でした。



それがUnity Hub 3.18.0から、簡単に作れるようになったので、今回はその紹介です!

カスタムテンプレートが正式にサポートされ、Unity Hubでプロジェクトテンプレートの作成と共有を標準化された方法で行えるようになりました。




カスタムテンプレート

続きを読む

Unity6.4からDestroy時に呼ばれるOnDisableのタイミングが微妙に変わってる件【Unity】

この記事でのバージョン
Unity 6000.3.4f1
Unity 6000.4.5f1


はじめに

UnityのMonoBehaviourにはコンポーネントが無効になった時や、

GameObjectが非アクティブになった時に呼ばれるOnDisableというメソッドがあります。



OnDisableでログが出るようして確認してみると以下のような感じに。

private void OnDisable() {
  Debug.Log($"OnDisable : {name}");
}


このOnDisableはDestroyされた際にも呼ばれるのですが、

その挙動がUnity6.4から微妙に変わったようなので今回はその紹介です!


Destroy時に呼ばれるOnDisableのタイミングが微妙に変わってる件

続きを読む

enumに後から項目を追加しても、保存していた値を出来るだけ変わらないようにする小技【Unity】【C#】

この記事でのバージョン
Unity 6000.3.4f1



はじめに

Unity(というよりC#)で状態や種類を合わす時にenumをよく使います。

public enum SampleType {
  None,
  Sample,
  Sample2,
  Sample3,
  Tmp,
}
  
//Tmpが初期状態
[SerializeField]
private SampleType _sampleType = SampleType.Tmp;


しかし、後からenumの途中に項目を追加すると、

Inspectorで設定していた値が変わってしまう事があります。

public enum SampleType {
  None,
  Sample,
  Sample2,
  Sample3,
  Sample4,//後から追加
  Tmp,
}

//Tmpが初期状態
[SerializeField]
private SampleType _sampleType = SampleType.Tmp;


これは、Inspectorのenumが名前ではなく、

内部的には数値として保存されているためです。


これはScriptableObjectを使ってデータを作成した時にも、

クラスをjson化して保存する時なども同様の問題が起こります。


今回はそんな時に使える小技の紹介です!


保存していた値を出来るだけ変わらないようにする小技

続きを読む