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を皆さん管理されているんでしょうか。ああ、もう、謎だらけ。
まあ、ボチボチ頑張ります。妄想自作ゲームを、妄想で終わらせたくないので。
この記事が気に入ったらサポートをしてみませんか?