Unityにてふと疑問に思ったことがあるんです。 それは大分前のことです。

友人「あのさ、このコードで他のMonoBehiviourの値を参照したいんだけど 私「みして。これは、Service作ればいんじゃない? 友人「、、。」 私「こんな感じでinterface書いて、実装しているimplクラス作成して、インスタンスは同プロジェクト内に1つのみ存在するようにインスタンスを制限して、、。出来た!」 友人「これ、何をしたの?」

と、続いていくわけですが、どんな構造かというと

  • Pump
  • Gauge

この2つのオブジェクトです。 PumpもGaugeも共にscaleというプロパティを持っています。 Gaugeでは、Pumpが押されていてかつ、大きさが0より大きい場合のみ処理をしたかったそうです。 普通に考えるなら、Gaugeの方で

GameObject go = GameObject.Find("Pump");
Pump pump = go.GetComponent<Pump>();

って、やるとプログラミング初心者の私は思います。 しかし、なんとなく気持ちわるいと思った私はServiceというものを作ってそれに大きさを取得するように変更しました。 でも、少し調べるとドラッグ&ドロップで簡単に実現出来るではありませんか(汗)

今までの私の苦労はなんと(汗)

正直に言うと、関連はあるけどオブジェクト的に正しくないものを親子関係にするのは個人的にいただけない感じだった。 もっとうまい方法ないのかな。(むしろ、親子関係ではないと思えばいいのか!?)