私はこのスクリプトを使用して、ユーザーが文字をタッチしたときに実行時にSelectMoveスクリプトを追加します。前に追加したゲームオブジェクトのコンポーネントを削除する
public GameObject target;
void Start() {
}
// Update is called once per frame
void Update() {
if(Input.touchCount > 0 || Input.GetTouch(0).phase == TouchPhase.Began){
ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
Debug.DrawRay(ray.origin,ray.direction * 20,Color.red);
if(Physics.Raycast(ray, out hit,Mathf.Infinity)){
Debug.Log(hit.transform.gameObject.name);
target = hit.transform.gameObject;
//Destroy(hit.transform.gameObject);
selectedPlayer();
}
}
}
void selectedPlayer(){
target.AddComponent(Type.GetType("SelectMove"));
}
上記のコードで、ユーザーがプレーヤーAをクリックすると、プレーヤーAは加速度センサーを使用して移動します。私がする必要があるのは、別のキャラクターをクリックすると、プレーヤーBと言えば、移動を停止するにはプレーヤーAが必要で、移動するのはプレーヤーBの時間です。しかし、私は欲しいものを手に入れていないようでした。
if (target != null)
{
var sphereMesh = target.GetComponent<SelectMove>();
Destroy(sphereMesh);
}
しかし、それはまだ動作していない:私はDestroy(this)
を使用するか、このコードによって、スクリプトを破壊しようとしました。
以前に追加したスクリプトを破棄しない場合、ユーザーが別の文字をクリックすると、前の選択されたプレーヤーは引き続き新しいものと一緒に移動します。
私は何をする必要があるかを達成する別の方法がありますか?
'sphereMesh.enabled = false'を破棄するのではなく、falseに設定する方が良いです。 –
破棄は正常に動作するはずです。 **(1つ)**あなたのコードでDestroy(sphereMesh); Debug.Log( "私はここにいる")を追加します。 「破棄」が実際に呼び出されているかどうかを判断します。私たちに報告してください! – Fattie
これは実際には現在動作しています。私は上記のコードと同じですが、今はうまくいきます。私は何をしたのか分からないが、とにかく感謝する! :) – kmf