2016-06-11 62 views
0

我正在爲我的程序中的一個錯誤研究一些蠻力解決方法,因爲似乎沒有辦法刷新編輯器中分配的值。無論如何,我正在嘗試將圖像(精靈)加載到另一個腳本可以使用的數組中。但是,它似乎並沒有工作,我不知道爲什麼。我之前沒有做過這樣的事情,所以我可能犯了一個簡單的錯誤。錯誤是說pics1 [i]超出範圍。這裏是我下面的代碼:Unity中的空陣列?

using UnityEngine; 
using System.Collections; 

public class Imageblock : MonoBehaviour { 

public Sprite[] pics1; 
public static Sprite[,] allPics; 

// Use this for initialization 
void Start() { 
    pics1 = Resources.LoadAll<Sprite> ("Dock Pics"); 
    allPics = new Sprite[100,100]; 
    for (int i = 0; pics1 [i] != null; i++) { 
     allPics [1,i] = pics1 [i]; 
    } 
} 

}

+0

「在檢查器中刷新值」有什麼問題?公共字段將被序列化,因此將由檢查員初始化,如果您從那裏更改它們,檢查員也會覆蓋它們,但仍然可以在運行時從代碼覆蓋它們。 – Xarbrough

+0

我有相同代碼的多個實例,所以我需要它從代碼中的檢查器中提取數據,而不是初始化。 – MechaScoots

回答

0

更改您的for循環這樣的:

for(int i = 0; i < pics1.Length; i++) 

可能已做的伎倆。如果你檢查pics1 [900]它不會返回null,但它會拋出IndexOutOfRangeException,這就是爲什麼你要事先檢查現有的索引。當然,在有效範圍內,如果索引已定義,但pic1 [i]可能返回null,但沒有指定元素。

+0

這確實奏效!謝謝!儘管現在,我在嘗試使用陣列時遇到錯誤。 – MechaScoots

+0

IndexOutOfRangeException:數組索引超出範圍。 (wrapper stelemref)object:stelemref(object,intptr,object) icontap.Update()(在Assets/icontap.cs:38)是錯誤。 – MechaScoots

+0

它指的是這樣的:對於(!INT I = 0; I MechaScoots