2017-01-03 2 views
0

У меня есть игра, подобная игре с мячом, и в моей игре у меня есть игровой объект, который является игровым менеджером, в том, что gameManager я создаю экземпляр мяча, что я хочу сделать , когда мой мяч остывает с силой, добавьте материал в математический массив, который находится в другом скрипте, когда я пытаюсь получить доступ к этому сценарию, он говорит , что объект не является экземпляром, я не знаю, как работать над этим: /.Не могу получить скрипт prefab: NullReference Exception

Вот что я сделал

public class PowerHit : MonoBehaviour { 
    MoveBall moveBall; 
    Renderer rend; 
    private Material yourMaterial; 
    // Use this for initialization 
    void Start() { 
     moveBall = GameObject.FindWithTag ("Player").GetComponent<MoveBall>(); 
     rend = moveBall.GetComponent<Renderer>(); 
     yourMaterial = (Material)Resources.Load("Tennis",typeof(Material)); 
    } 

    void OnCollisionEnter(Collision other) 
    { 
     Debug.Log (moveBall); 
     if (other.gameObject.tag == "Player") { 
      moveBall.mats [1] = yourMaterial; 
     } 
    } 
} 

сценарий, который я хочу, чтобы Acces является MoveBall скрипт, который atteched на мой мяч сборного, мой мяч PREFA имеет тег игрока.

+0

Так что ... в какой строке ошибка? 'moveBall.mats [1] = yourMaterial;'? – Serlite

+0

Вы уверены, что 'moveBall' не является нулевым? Что такое ** точное сообщение об ошибке? – Hellium

+0

NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта PowerHit.Start() (at Assets/PowerHit.cs: 12) –

ответ

0

Мгновентировать мяч в функции Awake() вместо Start().

0
void OnCollisionEnter(Collision other) 
{ 
    if (other.gameObject.tag == "Player") { 
     other.gameObject.GetComponent<MoveBall>().mats [1] = yourMaterial;; 
    } 

} 

Вы проверяете, что другой объект является игроком, сравнивая тег, если после этого вы получили, что игрок и на этом плеере есть сценарий под названием «MoveBall», то вы можете получить коврики [1] ссылки из этого сценария ,

Не нужно делать то, что вы делаете при запуске. Просто присвойте ссылку на «yourMaterial» или загрузите ее во время выполнения.

Смежные вопросы