スクリプトを書く上で、3.5と4からで一番大きな違いは、active関連があります。
Asset Storeなどからソースを落としてくると良く見かけるのが↓
#if UNITY_4_0 // Unity4.0のコード gameObject.SetActive(false);//とか #else // Unity4.0以外のコード gameObject.SetActiveRecursively(false);//とか #endif
これでも、確かにUnity4.0.xまでは問題なく動作していましたが、
今現在の最新版は4.1.2ですし、4.2の話もUnity公式開発者ブログで出ていますので、更新頻度の激しいUnityではあまり好ましくない書き方だと思います。
警告が出るだけでなく、最悪想定外の動作を起こしかねないので、以下のように書いたほうがいいでしょう。
#if UNITY_3_5 // 3.5.xのコード gameObject.SetActiveRecursively(false);//とか #else // それ以外(4.x以降想定)のコード gameObject.SetActive(false);//とか #endif
この書き方によって、最新版がイレギュラーではなく、旧版をイレギュラーとして扱うようになり、これ以降Unityが小アップデートしても、再度互換性崩すようなアップデートが入らない限り問題なくなりますよね。
この上で、”サポートしているのはUnity3.5以降です”とreadmeなりに書いておけばOKです。
まあ、結局Unity様が下位互換考えずに変更してしまえば、全てのアセットも更新せざるを得ないので、可能な限りこういった変更は少なくして欲しいものですね。
http://forum.unity3d.com/threads/150803-Major-version-conditional-compilation
ちなみに、ここにあるように自前でdefineしまくるというのもいいかもですね。
※NGUIどうやってるんだ?と覗いてみたら、同じくUNITY_3_5で区切ってました。さすがです!
Unityのアセット販売中!
ステートマシンの状態遷移やパラメータはエディタで編集でき、
ゲームロジックに依存するステートの挙動はスクリプトで記述可能なエディタ拡張。
RPGツクールVXやWOLF RPGエディターのオートタイルに準拠したエディタ拡張。