UnityのScene内のGameObjectを共通化する際に気づいたこと
Unityでビュー作る時、似た機能のコンポーネントに対して、interfaceで共通化を図るより、継承を使った方がいいのかな。
継承だと、画面クラス => 共通化クラス => MonoBehaviour って感じでMonoBehaviourの関数とか変数使える。
— Sato Takashi (@takashicompany) 2014, 3月 25
対して、インターフェース(public class Hoge : MonoBehaviour , [共通化インターフェース]...)の場合、共通化インターフェースで参照持ってる場合は、MonoBehaviourの関数・変数にアクセスできない。
— Sato Takashi (@takashicompany) 2014, 3月 25
Unityでシーン内のコンポーネントを共通化する際は、
Interfaceではなく継承を使った方が良いという話。
理由は、Interfaceで参照を持つとコンポーネントのGameObjectやTransformを参照しづらくなるから。
そんなに目新しいことではないけど、個人的になるほど!ってなったので、まとめた。
Interfaceで共通化した例
継承で共通化した例
もちろん、InterfaceにGameObjectやTransformを参照するための関数を追加して、実装すれば解決するが、手間がかかる。