質問: UnityでRPGを作っていて、アイテムを格納するカバン画面の 表示・非表示切り替えで質問です。 Webを検索すると、SetActiveで表示を切り替えるか、透明度を0にして見た目を消すか、という方法が載っていたのですが、透明にしただけだと、中のアイテムをクリックできてしまうので、SetActiveで非表示にするしかないと思ってるのですが、 SetActiveで非表示にすると、今度はアイテム取得時や消費時にカバン内容を変更しようとすると、3D活動中はUIは非表示にするのでオブジェクトを取得できず変更できなくなります。 となると、カバンを表示する度にアイテムを全部配置し直すことになるのですが、カバン内のアイテム数は70個以上あるので、表示の遅れが気になります。(3Dで戦闘画面を表示してるわけですから、これくらいの処理はどうということないのかもしれませんが) こういうゲームでのUI画面の切り替えは、どうやっているのか教えて頂ければと思います。どうぞよろしくお願いします
回答: > > SetActiveで非表示にすると、今度はアイテム取得時や消費時にカバン内容を変更しようとすると、3D活動中はUIは非表示にするのでオブジェクトを取得できず変更できなくなります。 > > > ここの認識が多分根本的に間違っていると思います。 非アクティブ時に取得出来ないということはGameObject.FindやGetComponentを使っていると思いますが、これは負荷の高い処理なので毎回実行するべきではありません。 どのようなスクリプトを組んでいるか分かりませんが、 GameObject.Findは最初だけ使用し、後は参照を取っておけばGameObjectが非アクティブだろうと操作可能です。 「配列」「List」「クラス」辺りを調べるといいと思います。 もし私が実装するなら、70個もアイテムがあるということはスクロールも必要だと思うので、 無限スクロール(テラシュールウェア)の利用も考慮します。 ※初心者には難易度高めなので、配列処理やuGUIの仕様を理解してから触った方がいいです。 何も考えずに作ると3Dだろうが何だろうが重くなります。(高性能のPCならあんまり気にならないかもしれませんが) 抽象的な回答になりますが、頑張ってください。