Unity 5以降であれば、シーンファイルのInspectorを拡張可能です
例えば、上記のスクリプトをUnityプロジェクトの
「Editor」フォルダに追加することで、シーンファイルのInspectorを
下記のように拡張することが可能です
このサンプルではInspector上からシーンファイルを
「Build Settings>Scenes In Build」に
追加したり削除したりできるようにしてみています
Unity 5以降であれば、シーンファイルのInspectorを拡張可能です
例えば、上記のスクリプトをUnityプロジェクトの
「Editor」フォルダに追加することで、シーンファイルのInspectorを
下記のように拡張することが可能です
このサンプルではInspector上からシーンファイルを
「Build Settings>Scenes In Build」に
追加したり削除したりできるようにしてみています
using UnityEngine; public static class TransformExtensions { /// <summary> /// X 軸方向に移動します /// </summary> public static void TranslateX( this Transform self, float x ) { self.Translate( x, 0, 0 ); } /// <summary> /// Y 軸方向に移動します /// </summary> public static void TranslateY( this Transform self, float y ) { self.Translate( 0, y, 0 ); } /// <summary> /// Z 軸方向に移動します /// </summary> public static void TranslateZ( this Transform self, float z ) { self.Translate( 0, 0, z ); } }
transform.TranslateX( 25 ); transform.TranslateY( 25 ); transform.TranslateZ( 25 );
DllNotFoundException: ulua LuaInterface.LuaState..ctor () (at Assets/uLua/Core/Lua.cs:37) HelloWorld.Start () (at Assets/uLua/Examples/01_HelloWorld/HelloWorld.cs:9)
「Assets/uLua/Plugins」フォルダを「Assets/Plugins」に移動して
Unityプロジェクトを開き直す
var dt = new DateTime( 2013, 3, 3, 12, 34, 56 ); Debug.Log( dt.ToString() ); // 3/3/2013 12:34:56 PM Debug.Log( dt.ToShortDateString() ); // 3/3/2013 Debug.Log( dt.ToLongDateString() ); // Sunday, March 03, 2013 Debug.Log( dt.ToShortTimeString() ); // 12:34 PM Debug.Log( dt.ToLongTimeString() ); // 12:34:56 PM
ToString
ToShortDateString
ToLongDateString
ToShortTimeString
ToLongTimeString
DateTime
型はこれらの関数を使用して特定の形式の文字列に変換できますが
Unity の場合、英語のカルチャで表示されてしまうため少しわかりづらいです
そのため、日本のカルチャで表示できる下記の拡張メソッドを作成しました
var dt = new DateTime( 2013, 3, 3, 12, 34, 56 ); Debug.Log( dt.ToPattern() ); // 2013/03/03 12:34:56 Debug.Log( dt.ToShortDatePattern() ); // 2013/03/03 Debug.Log( dt.ToLongDatePattern() ); // 2013年3月3日 Debug.Log( dt.ToFullDateTimePattern() ); // 2013年3月3日 12:34:56 Debug.Log( dt.ToShortTimePattern() ); // 12:34 Debug.Log( dt.ToLongTimePattern() ); // 12:34:56
DateTimeオブジェクトの時刻・日付から形式を指定して文字列に変換する - DateTimeからstringへの変換 : C# | iPentec
日時(DateTimeオブジェクト)を文字列に変換する - .NET Tips (VB.NET,C#...)
Scene ビュー左上の項目を「Overdraw」に変更することで描画負荷を確認できます
Unity+C# でゲームを開発している場合
StringBuilder クラスを使用して文字列連結することで
処理速度が高速化し、ガベージコレクションの実行回数を削減できます
using System; using UnityEngine; public class StringTest : MonoBehaviour { private void Awake() { var start = Time.realtimeSinceStartup; var str = ""; for ( var i = 0; i < 10000; i++ ) { str += "ピカチュウ"; } var elapsedTime = Time.realtimeSinceStartup - start; var count = GC.CollectionCount( 0 ); Debug.Log( "経過時間: " + elapsedTime ); Debug.Log( "GC回数: " + count ); } }
using System; using System.Text; using UnityEngine; public class StringBuilderTest : MonoBehaviour { private void Awake() { var start = Time.realtimeSinceStartup; var builder = new StringBuilder(); for ( var i = 0; i < 10000; i++ ) { builder.Append( "ピカチュウ" ); } var elapsedTime = Time.realtimeSinceStartup - start; var count = GC.CollectionCount( 0 ); Debug.Log( "経過時間: " + elapsedTime ); Debug.Log( "GC回数: " + count ); } }
クラス | 経過時間 | GC回数 |
---|---|---|
string | 1.309530000 秒 | 419 回 |
StringBuilder | 0.004355669 秒 | 39 回 |
http://ykimisaki.hatenablog.jp/entry/2014/08/02/040647 http://ykimisaki.hatenablog.jp/entry/2014/08/02/042917 http://ykimisaki.hatenablog.jp/entry/2014/08/06/151118
http://www.creativevillage.ne.jp/lp/cyberagent/
「サイバーエージェント×Unity×デザイン塾」に参加したので
レポートをQiitaにまとめました
上記のスクリプトを Unity プロジェクトの
「Editor」フォルダに追加していただくことで
Project ビューにエクスプローラで開くボタンを追加できます
Inspector ビューや Project ビューの右上に表示されている
3 本線のアイコンをクリックして「Add Tab>Inspector」を選択することで
Inspector ビューを複数表示できます
これだけだと、どちらの Inspector ビューにも
同じオブジェクトの情報が表示されてしまいますが
Inspector ビューの右上の鍵アイコンをクリックすることで
Inspector ビューに表示するオブジェクトの情報を固定できるので
違うオブジェクトの情報を
それぞれの Inspector ビューに表示できるようになります