У меня есть этот скрипт, в который он добавляет скрипт 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"));
}
В приведенном выше коде, если пользователь щелкнет Player A, игрок A будет двигаться с использованием акселерометра. Что мне нужно сделать, так это если я щелкну другого персонажа, скажем, игрока B, мне нужно, чтобы игрок A перестал двигаться, и теперь пришло время двигаться игроку B. Но мне казалось, что я не получаю того, что хочу. Я попытался уничтожить скрипт, используя Destroy(this)
или этот код:
if (target != null)
{
var sphereMesh = target.GetComponent<SelectMove>();
Destroy(sphereMesh);
}
Но это все еще не работает.
Если я не удалю предыдущий добавленный скрипт, если пользователь нажмет на другого персонажа, предыдущий выбранный игрок все равно будет двигаться вместе с новым.
Есть ли другой способ, которым я мог бы добиться того, что мне нужно было сделать?
sphereMesh.enabled = false
- person Martin Dawson   schedule 04.04.2016