コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】SceneManager.sceneLoaded が呼び出されるタイミング

概要 Awake OnEnable SceneManager.sceneLoaded Start

【Unity】ScriptableObject(.asset)を ProjectSettings フォルダに保存・読み込みしたい場合

概要 ScriptableObject(.asset)は ProjectSettings フォルダ以下に保存・読み込みができないが、 下記のスクリプトのように JSON 形式に変換することで保存・読み込みができる 参考サイト様

【Unity】Particle System の Inspector で未使用のモジュールを非表示にする方法

概要 Particle System の Inspector で「+」ボタンを押して 「Show All Modules」をオフにすると 未使用のモジュールは非表示にできます この状態で使用するモジュールを追加したい場合は 「+」ボタンから追加したいモジュールを選択します 参考ツイート様 W…

【Unity】Unity 2019.3 のエディタで使用されているフォントを 2019.2 以前のものに変更する方法

概要 Unity メニューの「Edit > Preferences...」から 「General」の「Editor Font」を変更することで エディタのフォントを 2019.2 以前のものに変更できます 参考ツイート様 #unitytips #unity3d Over time, I'm still not used to using the new Unity 20…

【Unity】Transform からすべての子オブジェクトを取得する方法

概要 using System.Collections.Generic; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var children = new List<Transform>(); foreach ( Transform child in transform ) { children.Add( child ); } } } 上記のようなスクリプ</transform>…

【Unity】Vector2 や Vector3 の ToString では小数部の桁数を指定できる

概要 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var vec = new Vector3( 1.234f, 5.678f, 9.012f ); // (1.2, 5.7, 9.0) Debug.Log( vec.ToString() ); // (1.2340, 5.6780, 9.0120) Debug.Log( vec.ToString( "F4…

【Unity】Particle System の再生が終了した時にイベントを実行する方法

概要 Particle System の Stop Action を「Callback」にして using UnityEngine; public class Example : MonoBehaviour { public void OnParticleSystemStopped() { print( "ピカチュウ" ); } } OnParticleSystemStopped 関数を定義したスクリプトを Partic…

【Unity】Particle System の再生が終了した時に削除する方法

概要 Particle System の Stop Action を「Destroy」にすることで Particle System の再生が終了した時に自動で削除されるようになります

【Unity】OnParticleSystemStopped が呼び出されない場合

概要 OnParticleSystemStopped 関数が呼び出されない場合は using UnityEngine; public class Example : MonoBehaviour { private void OnParticleSystemStopped() { print( "ピカチュウ" ); } } OnParticleSystemStopped 関数が private になっている可能性…

【Unity】スプライトを Sliced や Tiled で引き伸ばした時に Collider のサイズを簡単に合わせる方法

概要 例えば Collider がアタッチされたスプライトを Sliced にして横に引き伸ばした場合、 スプライトは引き伸ばされて表示されますが、Collider のサイズは変わりません しかし、Collider の Auto Tiling をオンにすると 引き伸ばされたスプライトに合わせ…

【Unity】Scene ビューのカメラの描画範囲を非表示にする方法

概要 Scene ビューのカメラの描画範囲を非表示にしたい場合は Scene ビューの「Gizmos」から Camera のチェックマークをオフにすることで 非表示にできます

【Unity】Inspector で値をドラッグして変更する時に Shift や Alt を押しながらドラッグすると値の増加値が変化する

概要 通常 Shift を押しながらドラッグ 通常よりも値の変化が大きい Alt を押しながらドラッグ 通常よりも値の変化が小さい 参考ツイート You can multiply the Inspector's editing speed by pressing SHIFT (faster) or ALT (slower).>More tips here: htt…

【Unity】ミップマップテクスチャを確認する方法

概要 「Generate Mip Maps」がオンのテクスチャを選択した状態で Inspector でスライダーを操作すると、ミップマップテクスチャを確認できます

【Unity】ミップマップで使用されるテクスチャをカスタマイズして、距離によって見え方を変えてみる

はじめに Unity ではミップマップテクスチャをカスタマイズすることができるので 普通はカメラからの距離が変わっても見た目は変わらないところも 例えば、3D キャラの装飾の色がカメラからの距離に応じて変わるようにしてみたり 2D 画像がカメラからの距離…

【Unity】テクスチャのミップマップのバイアスを変更する方法

方法1 using UnityEditor; using UnityEngine; public sealed class Example : AssetPostprocessor { private void OnPostprocessTexture( Texture2D texture ) { var importer = AssetImporter.GetAtPath( assetPath ) as TextureImporter; importer.mipMap…

【Unity】Scene ビューでミップマップレベルを可視化する方法

概要 Scene ビューの「Shaded」を押して 「Mipmaps」を押すと ミップマップレベルを可視化できます 赤 描画密度が高い テクスチャ解像度が必要以上に大きい 青 描画密度が低い テクスチャ解像度を大きくしても良い 参考サイト様 https://radiumsoftware.tumb…

【Unity】PC 向けにビルドしたゲームのウィンドウのサイズを自由に変更できるようにする方法

概要 Unity メニューの「Edit > Project Settings...」から「Player」を選択して 「Resizable Window」 をオンにしてビルドすると PC 向けにビルドしたゲームのウィンドウのサイズを自由に変更できるようになります

【Unity】Unity デフォルトのオーディオ機能を無効化する方法

概要 Unity メニューの「Edit > Project Settings...」から「Audio」を選択して 「Disable Unity Audio」をオンにすることで Unity のデフォルトのオーディオ機能を無効化できます

【Unity】uGUI で多解像度対応する方法

概要 例えば、画面の左上にボタンを配置した場合、何もしていないと 他の解像度にした時にボタンの位置が意図しない場所に表示されてしまうことがあります 他の解像度でも画面端に合わせた位置に UI を表示したい場合、 UI のオブジェクトを選択して Inspect…

【Unity】.unitypackage は Project ビューにドラッグしてもインポートできる

概要 .unitypackage は Project ビューにドラッグしてもインポートできます

【Unity】Ctrl + 左クリックでマテリアルに設定されたテクスチャのプレビューを表示できる

概要 Ctrl + 左クリックでマテリアルに設定されたテクスチャのプレビューを表示できます 参考ツイート You can preview the texture applied to a material with Ctrl + Left mouse button.#unitytips #unity #unity3d #gamedev pic.twitter.com/ybqbyzLsgv—…

【Unity】Android アプリ開発で使用できるプロファイラがまとめられている公式ドキュメント

概要 上記の公式ドキュメントで Android アプリ開発で使用できるプロファイラがまとめられています

【Unity】Unity エディタを開発者モードにしてみる

はじめに 上記のサイト様でも紹介されていますが、 Unity メニューの「Help > About Unity」を選択して ウィンドウが表示されたら internal と入力することで 「Developer Mode(開発者モード)」が有効になり、 いくつか開発者モード専用の機能が使えるよう…

【Unity】uGUI で Canvas Renderer の「Cull Transparent Mesh」をオンにすると透明なオブジェクトの描画をスキップできる

概要 例えば uGUI で透明な Image をシーンに配置した場合 画面には何も表示されないですが Overdraw を見てみると、うっすら赤くなっており 描画の処理は走ってしまっていることがわかります (透明な Image を10個重ねてみるとこのようにわかりやすくなり…

【Unity】ゲームオブジェクトにアタッチされているすべての MonoBehaviour の情報を JSON で出力する方法

概要 using System.Linq; using UnityEngine; public class Example : MonoBehaviour { private void Start() { var list = GetComponents<MonoBehaviour>() .Select( c => JsonUtility.ToJson( c, true ) ) ; var str = string.Join( "\n", list ); Debug.Log( str ); } } </monobehaviour>…

【Unity】すべての子オブジェクトを親オブジェクトから切り離す「Transform.DetachChildren」

概要 using UnityEngine; public class Example : MonoBehaviour { private void Start() { transform.DetachChildren(); } } 「Transform.DetachChildren」を使用することで すべての子オブジェクトを 親オブジェクトから切り離すことができます 孫オブジェ…

【Unity】新規プロジェクトを作成する時に選択できるテンプレートを自作する方法

はじめに Unity で新規プロジェクトを作成する時に選択できるテンプレートは自作できます 検証環境 Windows 10 Unity 2018.3.7f1 Unity Hub 1.6.0 作成方法 【Unity のインストール先】\Editor\Data\Resources\PackageManager\ProjectTemplates 上記のフォル…

【Unity】iOS で加速度センサを無効化してパフォーマンスを改善する

概要 iOS で加速度センサを使用しない場合、 Unity メニューの「File > Build Settings...」から 「Player Settings...」を開いて、iOS の Other Settings の中に存在する 「Accelerometer Frequency」を「Disabled」にすることで 少しだけパフォーマンスを…

【Unity】Unity 製の APK をバッチファイルで起動する方法

概要 adb shell am start -n "【パッケージ名】/com.unity3d.player.UnityPlayerActivity" 上記のようなコードが記述されたバッチファイルを実行する 参考サイト様

【Unity】Rigidbody2D を使用した際のすり抜けを防ぐ方法

概要 Unity メニューの「Edit > Project Settings > Time」を開いて 「Fixed Timestep」の数値を減らす 減らしすぎるとゲームが処理落ちする可能性があるので注意 参考サイト様