2017-06-16 62 views
0

下面的脚本被添加到空的游戏对象WeaponGroup,可以使用编辑器填充该空白游戏对象。我做了一个新的游戏对象WeaponGroups,它应该有一个脚本SetupWeaponGroupsScript。我如何传输下面的属性,以便每个WeaponGroupSetupWeaponGroupsScript将有一个WeaponGroup对象的数组)以类似于以下所做的方式进行设置,以便我将SetupWeaponsScript属性隐藏给检查员并通过SetupWeaponGroupsScript填充它们?如何通过给定层级中的检查员访问预制阵列

public class SetupWeaponsScript { 

// Here's our tuple combining a weapon prefab and a direction. 
[System.Serializable] 
public struct DirectedWeapon { 
    public WeaponScript weapon; 
    public WeaponScript.Direction direction; 
} 

// The prefabs array is now this tuple type. 
public DirectedWeapon[] weaponPrefabs; 
public WeaponScript[] weapons; 

void Start() 
{ 
    weapons = new WeaponScript[weaponPrefabs.Length]; 

    for (int i = 0; i < weaponPrefabs.Length; i++) 
    { 
     // Using typed Instantiate to save a GetComponent call. 
     weapons[i] = Instantiate<WeaponScript>(weaponPrefabs[i].weapon); 
     weapons[i].weaponDir = weaponPrefabs[i].direction; 
    }  
} 
} 

图形,我想在编辑器中的以下分级来一个新的脚本SetupWeaponGroupsScript

enter image description here

回答

0

这应该是接近:

public class SetupWeaponsScript 
    { 
     [System.Serializable] 
     public struct DirectedWeaponGroup 
     { 
      public DirectedWeaponScript[] weaponPrefabs; 
     } 

     // Here's our tuple combining a weapon prefab and a direction. 
     [System.Serializable] 
     public struct DirectedWeapon 
     { 
      public WeaponScript weapon; 
      public WeaponScript.Direction direction; 
     } 

     // The prefabs array is now this tuple type. 

     public DirectedWeaponGroup[] weaponGroups; 

     public DirectedWeapon[] weaponPrefabs; 
     public WeaponScript[] weapons; 

     void Start() 
     { 
      weaponGroups = new DirectedWeaponScript[weaponGroups.Length]; 

      for (int h = 0; h < weaponGroups.Length; h++) 
      { 
       weaponPrefabs = weaponGroups[h].weaponPrefabs; 
       weaponPrefabs[h] = Instantiate<DirectedWeaponScript>(weaponGroups[h].weaponPrefabs); 

       weapons = new WeaponScript[weaponPrefabs.Length]; 

       for (int i = 0; i < weaponPrefabs.Length; i++) 
       { 
        // Using typed Instantiate to save a GetComponent call. 
        weapons[i] = Instantiate<WeaponScript>(weaponPrefabs[i].weapon); 
        weapons[i].weaponDir = weaponPrefabs[i].direction; 
       } 
      } 
     } 
相关问题