2016-09-04 6 views
0

Я пытаюсь создать экземпляр объекта и при создании экземпляра установить переменную uiManager в экземпляр объекта с переменной uiManager из сценария spawnPlayer.Когда я запускаю объект и устанавливаю переменную, он не работает в единстве. C#

Когда я играю и приостанавливаю игру, тогда посмотрите на экземпляр объекта, переменная не установлена.

Heres код!

using UnityEngine; 
using System.Collections; 

public class playerSpawner : MonoBehaviour { 

    public GameObject[] cars; 
    public uiManager ui; 

    int carSpawned; 

    void Start() 
    { 
     spawn(); 
    } 

    void spawn() 
    { 
     Instantiate (cars [carPicController.next], transform.position, transform.rotation); 
     carPicController.next = carSpawned; 
     Debug.Log ("player spawned"); 
     setuiManager(); 
    } 

    void setuiManager() 
    { 
     //get the thing component on your instantiated object 
     uiManager ui = cars [carSpawned].GetComponent<uiManager>(); 

     //set a member variable (must be PUBLIC) 
     ui = ui; 
    } 
} 
+0

Просто для стандартной вещи для ya все мои общедоступные методы и переменные начинаются с капитала, а все мои личные методы и переменные начинаются с строчной буквы. Как указал Эндрю Шеферд ниже, ваш код в основном устанавливает переменную 'ui' для себя. Если вы определяете переменную класса 'ui' как' Ui', вы могли бы заметить это, а также это приведет к удалению дополнительных символов для 'this.ui' в' Ui' – Canvas

ответ

2

Вопрос не уточняется.

Это будет работать:

void setuiManager() 
{ 
    //get the thing component on your instantiated object 
    uiManager ui = cars [carSpawned].GetComponent<uiManager>(); 

    //set a member variable (must be PUBLIC) 
    this.ui = ui; 
} 

Проблема вы создали временную переменную с тем же именем, как член класса. Внутри setuiManager предполагается, что ui ссылается на временную переменную, а не на элемент данных.