Programming」カテゴリーアーカイブ

プログラミング全般に関するカテゴリーです。

C#のgeneric methodでnullをreturnする方法

C#のgeneric methodでnullreturnしたい場合はdefaultというのを使って、次のようにできるみたいです。

return default(T);

Genericsでいろいろしたい場合に役立ちそうです。

リンク

How can I return NULL from a generic method in C#? – Stack Overflow
https://stackoverflow.com/questions/302096/how-can-i-return-null-from-a-generic-method-in-c

edit modeでOnRenderImageが呼び出されるタイミングについて

UnityのOnRenderImageは、play mode時は毎フレーム呼ばれるけれど、edit mode時は必要な時のみ呼ばれるという実装になっているそうです。

Unity – Scripting API: ExecuteInEditMode
https://docs.unity3d.com/ScriptReference/ExecuteInEditMode.html

edit modeでOnRenderImageを呼び出したい場合は、

if (GUI.changed) {
  Repaint ();
}

のような感じで、Repaintを実行してみると良いようです。

UpdateOnGUIでもedit modeとplay modeで挙動が変わるそうなので、気を付けてください。

リンク

Unity – Scripting API: ExecuteInEditMode
https://docs.unity3d.com/ScriptReference/ExecuteInEditMode.html

Unity – Scripting API: ExecuteInEditMode
https://docs.unity3d.com/ScriptReference/ExecuteInEditMode.html

When is Update called in edit mode? – Unity Answers
https://answers.unity.com/questions/122074/when-is-update-called-in-edit-mode.html

UnityのInspectorで構造体使う方法

Unityではpublicもしくは[SerializeField]の変数をInspectorから設定することができます。このInspectorで独自に定義した構造体を使いたい場合は[System.Serializable]を使うと良いそうです。

[System.Serializable]
public struct Example
{
  public string name;
  piblic int value;
}

[SerializeField]
Example example;

リンク

C#で構造体をInspectorで使える様にする方法 – 強火で進め
http://d.hatena.ne.jp/nakamura001/20110805/1312563959