万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

50 Tips for Working with Unity (Best Practices)で(僕が)分からないのを書いていく(Unity C#)

URL:http://devmag.org.za/2012/07/12/50-tips-for-working-with-unity-best-practices/
→翻訳:http://warapuri.tumblr.com/post/28972633000/unity-50-tips

ExtensionとMonoBehaviourBase

23、インターフェースの共有するコンポーネントを使うためのextensionを使おう

MonoBehaviour[] monoBehaviours = FindObjectsOfType<MonoBehaviour>();

これはFindObjectsOfTypeがobjectを返してしまうので、↓こうしないと動かないね。

MonoBehaviour[] monoBehaviours = FindObjectsOfType(typeof(MonoBehaviour)) as MonoBehaviour[];

クラス設計

29、シングルトンは便利だ

Singleton.csはこうしないとダメ。アタッチするものではないみたい。

Singleton<MonoBehaviour> singleton = new Singleton<MonoBehaviour>();


インスペクター描画の再実装の仕方

コンポーネントを描画する再起とリフレクションを使おう
おそらく、「リフレクションを使い、コンポーネント再帰的に描画しよう」だと思う。

インスペクター描画の再実装の仕方

2. コンポーネントを描画する再起とリフレクションを使おう
「上の関数はこんな感じに助けてくれる」→「上の関数は下のヘルパーを使う」の誤訳すだと思う。


ちなみに、↓にあるSplitCamelCase()メソッドはそのままで動かない。

field.Name.SplitCamelCase();    

・Stringを拡張する「StringExtension」を作っておく。

using System.Text.RegularExpressions;

public static class StringExtension
{
    public static string SplitCamelCase(this string str)
    {
        return Regex.Replace( Regex.Replace( str, @"(\P{Ll})(\P{Ll}\p{Ll})", "$1 $2" ), @"(\p{Ll})(\P{Ll})", "$1 $2" );
    }
}

例えばこう使う。

string str = "HogeBar";
str.SplitCamelCase(); 

"HogeBar"が、"Hoge Bar"みたいにスペースが入ったもので返り値が来る。
→ 他のとこに書いてある、「VampireDark じゃなくて DarkVampire; ButtonPaused じゃなくて PauseButton。で、インスペクター上では「pause button」となってるから見つけやすい。」
のためだと思う