2013-09-27 3 views
0

Я хочу создать объекты X в цикле, получить доступ и установить свойства вновь созданных объектов. Я использовал метод Instantiate с переданным RigidBody, как показано в учебнике, но мне нужно получить доступ к свойствам скрипта, связанного с объектом, а не только к жесткому телу.Создание экземпляров класса в Unity во время выполнения

Вот метод, который я пытаюсь сделать работу:

public void makeGrid(int w = 10, int h = 10) 
{ 
    gridWidth = w; 
    gridHeight = h; 

    int tileArrayLength = gridWidth * gridHeight; 
    tileArray = new Tile[tileArrayLength]; 

    for (int i = 0; i < gridWidth; i++) 
    { 
     for (int j = 0; j < gridHeight; j++) 
     { 
      // add tiles 
      Tile t = new Tile(); // !!! doesn't work >_< 
      t.posX = i; 
      t.posY = j; 
      t.id = j + 10 * i; 

      tileArray[t.id] = t; 
     } 
    } 

} 

ответ

2

Я хочу создать объекты X в цикле, доступа и набор свойств вновь создаваемых объектов.

Вы можете создать Prefabs с помощью редактора, а затем их экземпляры, или явно создать GameObject и прикрепить компоненты, необходимые для него:

GameObject prefabInstance = GameObject.Instantiate(Resource.Load("path_to_prefab")) as GameObject; 

GameObject instanceThroughReference = GameObject.Instantiate(aReferenceToAnInstantiableObject) as GameObject; 

GameObject emptyGameObject= new GameObject("empty game object"); 

Для того, что относятся:

I Я использовал метод Instantiate с переданным RigidBody, как показано в учебнике, но мне нужно получить доступ к свойствам скрипта , связанного с объектом, а не просто жестким тело.

С собственностью, я думаю, вы имеете в виду Components, прикрепленный к экземпляру GameObject. Либо если вы создаете экземпляр объекта из ссылки или загружаете через Resources.Load, если исходный GameObject имеет компонент, который вы хотите подключить к нему, вы можете получить их с помощью метода GetComponent или получить возвращаемое значение AddComponent.

Если вы создаете пустой GameObject вы должны приложить явно Components вам нужно:

GameObject go = new GameObject("foo"); 
Bar bar = go.AddComponent<Bar>(); //where Bar extends MonoBehavior 
Смежные вопросы