2016-06-11 6 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(int i = 0; i < pics1.Length; i++) 

ここでは以下の私のコードです。 pics1 [900]をチェックすると、nullは返されませんが、IndexOutOfRangeExceptionがスローされます。そのため、事前に既存のインデックスをチェックする必要があります。もちろん、有効範囲内のpic1 [i]は、インデックスが定義されていても要素が割り当てられていない場合、nullを返すことがあります。

+0

それはうまくいった!ありがとうございました!現在、配列で作業をしようとするとエラーが発生します。 – MechaScoots

+0

IndexOutOfRangeException:配列インデックスが範囲外です。 (wrapper stelemref)オブジェクト:stelemref(オブジェクト、intptr、オブジェクト) icontap.Update()(Assets/icontap.cs:38)はエラーです。 – MechaScoots

+0

それはこのことをいう:(i = 0、int型、iがImageblock.allPics.GetLength(1)= NULLを<; I ++は!)のために{ \t \t \t \t keyPics [I] = Imageblock.allPics [locationIdentifyer、i]は、 \t \t \t} – MechaScoots