これをデバッグしていますが、これまではどこにも行きません。Update()+ Raycast +タグがマウスをクリックしたときにゲームオブジェクトの誤った識別を引き起こしています
私の設定:実行時にプレハブが生成されました。彼らはそれらを識別するためにすべてタグ "npc_entity"を持っています。 私はそれらのうちの1つをクリックすると、gameobject(私のカスタムエンティティクラス)に接続されているコンポーネントの1つにあるデータを取得したいと思います。私はアップデート機能でレイキャスティングでこれを達成し、ヒットポイントでゲームオブジェクトを取得します。
ここで奇妙なことは次のとおりです。私は、ゲームウィンドウ内の特定のエンティティをクリックするためにレイキャストを使用します。パラメータを読んでください。インスタンス化されたエンティティが1つしかない場合は、すべてOKです。 2つ以上ある場合は、更新が複数回呼び出され、そのたびにデータが上書きされます。
私は、プレハブ自体でレイキャスティングする更新機能を備えたスクリプトを持っています。これはコードです:
void Update()
{
// using this to select entities
if (Input.GetMouseButtonDown(0) && Camera.main.name == "top_Camera")
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, raycast_length) && hit.collider.gameObject.tag == "npc_entity")
{
selected_target = gameObject;
Debug.Log(selected_target.name + " " + selected_target.GetComponent<AIPlayer>().connected_player.playername);
UpdateNPCUI();
}
}
}
void UpdateNPCUI()
{
ui_manager.NPCpanel.GetComponentInChildren<CanvasGrou>().alpha = 1;
NPC_name.text = selected_target.GetComponent<AIPlayer>().connected_player.playername);
}
私は理解していないで、私はインスタンス化し、すべてのゲームオブジェクトは基本的に処理されている動作を取得なぜ。ゲームオブジェクトを一度クリックすると、レイキャストはその位置がゲームオブジェクトの位置と一致していることを示します。他の人はそれの近くにいません。
何か提案がありがとうございます。ステップバイステップのデバッグもしています。私はその問題を見ることができません。
?あなたの問題はあまり明確ではありません。メソッドが複数回実行されており、値が上書きされていますか? –
このスクリプトはプレハブに添付されています。エンティティをインスタンス化すると、それぞれがこのスクリプトを持ちます。問題は、私が理解したところでは、N個のエンティティをN個のスクリプトで持ち、それぞれが独自のスクリプトで更新スクリプトを呼び出していることが原因で、データが上書きされることがあります。クリックしたユニットでのみクリックをトリガーしようとしていますが、発生しません。 –
Raycastスクリプトは、他のコントローラタイプのゲームオブジェクトに配置する必要があります。 –