見出し画像

Unity入門編 2

 妄想自作ゲーム『A23』、X(旧Twitter)でのご助言をいただいて、とりあえず画面下部のメニューの文字を変えることができた。ちょっとだけ前進。これからこのメニューが画面から出たり消えたり、それぞれのボタンが押せるようにしたりする。なげぇー。先なげぇー。

「絵が上手くなってから作ろう」とか「Blender習得して背景を楽にして作ろう」とか色々考えてたんだけど、「とりあえず基本のノベルゲームとしての仕組みを先にUnityで作ってからの方が良くない?」と思って、重い腰(マジでUnity起動するのに勇気要る)を上げてみたわけです。

 HTML、CSSは言うに及ばず、Adobe FlashのAction Script 3.0とか、JavaScript程度なら平気だったんですが、C#ってやたら難しいんですね。僕は元々プログラマではないので、かなりのトライ&エラーを繰り返しています。

 特にPrefabの扱いに苦労してて。Prefabからは親を参照できないみたいなので、Prefabに処理を書いておいて、別のGameObjectとかからPrefabに指示を投げるのが一般的だと思うんですが、その度にGameObjectからGetComponentとかするんでしょうか(処理がめっさ重くなりそう)。仮にGameObjectから

// BasePrefabを宣言しておく
[SerializeField] GameObject BasePrefab;

// BasePrefabをInstantiateする
private void CreateObject()
{
  GameObject newPrefab = Instantiate(BasePrefab, new Vector3(0, 0, 0), Quaternion.identity);
}

としても、CreateObject()のスコープを外れれば、生成したPrefabであるnewPrefabを参照できなくなりますよね。

 だとすると、

// BasePrefabを宣言しておく
[SerializeField] GameObject BasePrefab;

// スコープ外にPrefabを持たせる用に空のGameObjectを作っておく
private GameObject targetPrefab;

// BasePrefabをInstantiateする
private void CreateObject()
{
  GameObject newPrefab = Instantiate(BasePrefab, new Vector3(0, 0, 0), Quaternion.identity);
  targetPrefab = newPrefab;
}

とかするんでしょうか。これ、GameObjectが1つなら良いけど、数増えたらどうするの? ってかこの時点で既にエラー起きそうな予感。根本的に使い方を間違ってるんでしょうか。どうやって大量の、しかも複数の関数から生成したPrefabを皆さん管理されているんでしょうか。ああ、もう、謎だらけ。

 まあ、ボチボチ頑張ります。妄想自作ゲームを、妄想で終わらせたくないので。

この記事が気に入ったらサポートをしてみませんか?