私はMonoBehaviourとしてスクリプトコンポーネントを持つプレハブを持っています。このスクリプトは3つのパブリックフィールドをテキストとして持っています。ゲームオブジェクトを保存してシーンから取り除く前に、インスペクタで割り当てられています。実行時にインスタンス化されたプレハブのUI要素への参照を保持する方法
パネルのようなUI要素がある場合は、これでうまく動作します。プレハブが実行時にインスタンス化されると、プレハブで定義されたパネル上のすべてのテキストフィールドが割り当てられます。
これは悲しいことに、私が作った別のプレハブでは機能しません。これはUI要素ではありません。私の場合は、様々なコンポーネント(navmeshエージェント、カプセルコライダー、リジッドボディー、アニメーターなど)を持つメッシュゲームオブジェクトです
これは、UIパネルでは、要素が既にゲームオブジェクト参照が異なるゲームオブジェクト上にあるときは、 Unityはそれらを追跡しません。
これは、ゲームオブジェクト自体の一部でない場合、私は各プレハブで参照したい要素をコードで実行時に追加する必要があることを意味します。この場合、インスペクタを使用しないので(このタイプのすべてのゲームオブジェクトは実行時にインスタンス化されます)、私は自分の参照をパブリックにしないでください。
これを回避する他の解決策がないかどうかを確認するだけです。
あなたはいつでもあなたのUI要素を見つけることができます。FindObjectWithName' – LibertyLocked
はい、それはフィールドをパブリックにする目的を無視し、エディタを使って参照を追加します。私の考えでは、プレハブを作成するときにエディタで行われたすべてのことは大変です。代わりに、ほとんどの場合そのようには機能しません。 –