質問: Unity初心者です。もしわかる人がいましたら、どうぞよろしくお願いいたします。 Unityにおいて、あるシーンでゲームがクリア出来たら、(ポイントが一定ポイント以上になったら、)他シーンに存在する、あるゲームオブジェクト(ボタンです)のSetActiveをfalseからtrueにしたいのですが、どうしても方法が見つかりません。 試したこと SetActiveにしたいオブジェクトにタグ付けして、そのタグのついているものを他シーンからSetActiveにしてみましたが、やはり他シーンのオブジェクトには触れることが出来ないようです。
回答: 私もそれほどUnityに詳しくないので他に方法があるかもしれませんが...... 他シーンのGameObjectを操作することはできないので、staticフィールドやPlayerPrefsを利用することで、状態を変えてやります。 例えば、シーンAでどこかのスクリプトの`static bool isButtonActive`をfalseからtrueへ書き換えたとし、 シーンB読み込み時に"あるゲームオブジェクト"にアタッチしておいたスクリプトの`Start()`内で`isButtonActive`の値でSetActiveを更新すればokという流れです。 staticフィールド(staticを付けた変数)は、シーンを切り替えても内容を保持したままです。 ###### 追記 少し勘違いしていました。setActiveがfalseでしたらそもそもスクリプトも動かないですよね。 ButtonManager等の名前のGameObjectを別途用意し、予めインスペクター側で参照を取っておくことで操作が可能になるかと。 別途用意した管理用ゲームオブジェクト及びスクリプトに`[SerializeField] private GameObject buttonGmObj;`を作るなどして。