Mad Games Tycoon 2のMOD開発記

Mad Games Tycoon 2というUnity製のゲームが大好きなので、MODを制作中、その備忘録。

MGT2内のUIを使用して、自作UI(改造UI)作成を模索中→やり方ひらめき→完成。

持っていきたいUIパーツのClone作って、それを表示したいUIのMainにParentの階層を持っていくように改造してやれば行けそう。

 

ただし、弄る部分が鬼のように多いので、かなり精通してたり、解析好きじゃないときついですね。まぁ普通はUnityEditorでやることを地道にScriptからやってるようなものなので。

 

ゲーム開発用に名前入力するパーツを流用して、任意の数値を入れるようにしたいので、ちょっとやってみる。

☆テキストボックスを小さくしたい。

InputFieldNameをCloneしてInputFieldName(Clone)の、RectTransform.sizeDelta(Vector2 x, y)のx, yを弄ってやると縮小できます。

倍率で変えないとおま環の発生の温床になると思います。

InputField.textに任意の数字があります。

 

☆入力した情報はどっから持ってくるの?

クローン化したそのテキストボックスのGameObject.GetComponent<Text>.textやら、<InputField>.textやらなんやら。なんか連動してるので、いくらでも持っていけます。

 

☆座標とかサイズ調整とかめんどくさそう

まぁちょっとめんどい。

めんどいが、既存のオブジェクトからlocalPosition引っ張ってこれるので多少マシかな。それで式作って微調整するだけで終わり。

 

☆ちょっとつまづいたぞポイント

            GameObject placeholder = inputLoopNumber.transform.Find("Placeholder").gameObject;
            placeholder.GetComponent<Text>().text = "Loop N";

GetComponentInChildrenってやっても階層の上から順々に拾っていくので、特定のこれ!ってやつを拾い出すには結局transform.Findとか使わないとだめだよ~ってことかな。

あと、どっから呼び出されてるのかがブラックボックスで未だに謎なんですが、テキストボックスの最初の初期値(名前入力してね!みたいなやつ)が、最初の初期化しか設定してないと2回目以降上書きしてくるので、かかさず設定するようにしようね。

 

 

☆実際に別のの場所からGameObjectを呼んでくるのに一苦労したので備忘録

steamcommunity.com

steamcommunity.com

ここに一通り書いておきました。

まぁざっくりいうと、ActiveSelfの状態で万能なGameObject.Findは使えなくなるんで、transform.Findを噛ませようねってことですね。

 

ちなみに、色々弄ってたらできました。

実際に動作させている目的として、Free Updateのループ回数を指定できるようにするってやつに使ってます。

三者のユーザーからの意見から作ってみたのですが、まぁ…なぜか反応は全く無いwなぜだ…?

ただ自分が使う分にもかなり使いやすくなったなぁと感じましたね。

長期間アプデする開発部とかそういうの作るのに使えそう。

steamcommunity.com

 

youtu.be

Modを作り始めて早1ヶ月が経とうとしていますが、まさか…ここまでできるようになるとは思っていませんでした。

ぶっちゃけ自分がどれだけできるのか、限界を試そうと色々やってたわけですが、おかげで結構細部まで弄ることができるようになった自負はあります。これ応用すれば、時間巻き戻すための闇市場UIとか作れそうだし、夢が広がってきました。