2017-06-16 58 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; 
       } 
      } 
     } 
相關問題