2019-03-01から1ヶ月間の記事一覧
はじめに 「UISoftMask」を Unity プロジェクトに導入することで uGUI でソフトマスクを使用できるようになります 使用例 使い方 「UISoftMask」がアタッチされたゲームオブジェクトを作成します 「Alpha Texture」にソフトマスクで使用するテクスチャを設定…
はじめに 「LayerManager」を Unity プロジェクトに導入することで レイヤーの順番や割り当てを変更できるようになります 使用例 Unity メニューの「Tools > Yondernauts > Layer Manager」を選択すると レイヤーの順番や割り当てを変更できるウィンドウが表…
はじめに Unity エディタの Game ビューに iPhone X のセーフエリアを表示できる 「iPhone X Safe Area Drawer」を GitHub に公開しました バージョン Unity 2018.3.9f1 使用例 使い方 「iPhoneXSafeAreaDrawerSettings」を選択して IsEnable をオンにすると…
はじめに 「Render Queue Unity Extension」を Unity プロジェクトに導入することで Unity プロジェクトに存在するすべてのマテリアルやシェーダの Render Queue を一覧で表示できるようになります 使用例 Unity メニューの「Tools > Render Queue」を選択す…
はじめに 「Unity Heap Crawler」を Unity プロジェクトに導入することで static 変数、Hierarchy のオブジェクト、プレハブ、ScriptableObject などが どのくらいヒープ領域を使用しているか内訳を見ることができます 使い方 Unity エディタ再生中にメニュ…
はじめに 「UnitySamples」リポジトリに含まれている 「AssetReferenceFinder.cs」を使用することで アセットバンドル化するアセットが アプリに内包するアセットから参照されていないか確認できます 使用例 例えば、アセットバンドル化するアセットが含まれ…
概要 using System.Linq; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var list = AssetDatabase .FindAssets( "t:Material" ) .Select( AssetDatabase.GUIDToAssetPath…
概要 using System.Linq; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var list = AssetDatabase .FindAssets( "t:Prefab" ) .Select( AssetDatabase.GUIDToAssetPath )…
ソースコード 使い方 「SafeAreaPanel」を uGUI のオブジェクトにアタッチすることで使用できます 例えば iPhone XR で使用すると、上記のようにセーフエリアに合わせて UI.Image のサイズが自動で調整されます
概要 using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { private void Start() { var sampler = CustomSampler.Create( "Pokemon" ); sampler.Begin(); for ( int i = 0; i < 10000; i++ ) { Debug.Log( "あああああ…
ソースコード using System; using System.Linq; public static class StringExt { public static string GetFirstLine( this string self ) { var separator = new [] { Environment.NewLine }; return self .Split( separator, StringSplitOptions.None ) …
概要 var reports = CrashReport.reports .Take( CrashReport.reports.Length - 1 ); 自分の環境下だけの問題かもしれないですが、 CrashReport.reports の末尾の要素2つは重複しているようだったので 上記のコードのように末尾のコードは無視して参照してい…
はじめに TexturePacker でパッキングしたテクスチャは SpriteRenderer や uGUI の Image で使用することができます 検証環境 Unity 2018.3.7f1 TexturePacker 4.12.1 準備 上記サイトから TexturePacker をインストールします また、 「TexturePacker Impor…
概要 例えば、上記のように3個のテクスチャを描画するシーンを Android にビルドして using System.Linq; using System.Text; using TMPro; using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { public TMP_Text m_tex…
ソースコード 使用例 using System.Text; using TMPro; using UnityEngine; public class Example : MonoBehaviour { public TMP_Text m_text; private readonly UnityMemoryChecker m_unityMemoryChecker = new UnityMemoryChecker(); private void Update(…
ソースコード 使用例 using System.Text; using TMPro; using UnityEngine; public class Example : MonoBehaviour { public TMP_Text m_text; private readonly MonoMemoryChecker m_monoMemoryChecker = new MonoMemoryChecker(); private void Update() {…
概要 using System.Linq; using System.Text; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var list = Resources .FindObjectsOfTypeAll<Material>() .Where( c => ( c.hideFlags & HideFlags.NotEditable ) == 0 ) .Where( c </material>…
概要 using System.Linq; using System.Text; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var list = Resources .FindObjectsOfTypeAll<Texture2D>() .Where( c => ( c.hideFlags & HideFlags.NotEditable ) == 0 ) .Where( c </texture2d>…
スライド
概要 Nintendo Switch の「お客様が選ぶ!ダウンロード専用ソフト おすすめランキング3月号」で「ガブッチ」が6位に選ばれました! ランダムなアンケートによる結果とのことで、とても嬉しいです。励みになります
概要 using UnityEngine; using UnityEngine.Diagnostics; public class Example : MonoBehaviour { private void Update() { if ( Input.GetKeyDown( KeyCode.Space ) ) { Utils.ForceCrash( ForcedCrashCategory.AccessViolation ); } } } UnityEngine.Dia…
ソースコード 使用例 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var watcher = new GCWatcher(); watcher.Start(); for ( int i = 0; i < 10000; i++ ) { Debug.Log( "【計測したい処理】" ); } watcher.Stop(); D…
概要 using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { private CustomSampler m_sampler1; private CustomSampler m_sampler2; private CustomSampler m_sampler3; private CustomSampler m_sampler4; private voi…
概要 Unity 2018.3.7 だと何もしていなくても毎フレーム 17B の GC Alloc が発生する Unity 2018.3.8 以上にアップデートすると直る 参考サイト様
ソースコード 使用例 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { GCEvent.Initialize(); GCEvent.mOnCollect += OnCollect; } private void OnDestroy() { GCEvent.mOnCollect -= OnCollect; } private void OnColl…
はじめに 「UGUI Super ScrollView」はいろんなスクロールビューが 簡単に実装できるのでとても好きなのですが、 スクロールするたびにスクロールバーがカクカクするのが気になっていました おそらくスクロールビューに含まれる要素の大きさが可変でも 問題…
概要 例えば HogeSettings という名前の ScriptableObject を取得したい場合 var settings = AssetDatabase .FindAssets( "t:HogeSettings" ) .Select( c => AssetDatabase.GUIDToAssetPath( c ) ) .Select( c => AssetDatabase.LoadAssetAtPath<HogeSettings>( c ) ) .Fir</hogesettings>…
概要 using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var obj = Selection.activeObject; var path = AssetDatabase.GetAssetPath( obj ); var importer = AssetImporter.GetAtPath( path ) as…
概要 using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var go = Selection.activeGameObject; var status = PrefabUtility.GetPrefabInstanceStatus( go ); var isMissing =…
概要 using System.Linq; using UnityEditor.Animations; public static class AnimatorControllerExt { public static bool HasNullMotion( this AnimatorController self ) { foreach ( var n in self.layers ) { if ( n.stateMachine.states.Any( c => c.…