2016-06-11 2 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

"검사기의 값을 새로 고치는 중"의 문제점은 무엇입니까? Public 필드는 직렬화 될 것이므로 inspector에 의해 초기화되며, inspector에서 public 필드를 변경하면 inspector에 의해 무시되지만 런타임에 코드에서 덮어 쓸 수도 있습니다. – Xarbrough

+0

동일한 코드의 인스턴스가 여러 개 있기 때문에 초기화가 아닌 코드의 관리자에서 데이터를 가져와야합니다. – MechaScoots

답변

0

변경하면 : 이미 트릭을 할 수

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

여기 아래에있는 내 코드입니다. pics1 [900]을 검사하면 null을 반환하지 않지만 IndexOutOfRangeException을 던져 버릴 것입니다. 그래서 사전에 기존 색인을 확인해야합니다. 물론 유효한 범위 내에서 pic1 [i]는 인덱스가 정의되었지만 요소가 할당되지 않은 경우 null을 반환 할 수 있습니다.

+0

그게 효과가 있었어! 고맙습니다! 현재 배열을 사용하여 작업 할 때 오류가 발생합니다. – MechaScoots

+0

IndexOutOfRangeException : 배열 인덱스가 범위를 벗어났습니다. (래퍼 stelemref) 개체 : stelemref (개체, intptr, 개체) icontap.Update() (Assets/icontap.cs : 38) 오류입니다. – MechaScoots

+0

그것은이 지칭 : 위해 (! int로 I = 0; i가 Imageblock.allPics.GetLength (1) = NULL을 <; 내가 ++) { \t \t \t \t keyPics을 [I] =의 Imageblock.allPics [locationIdentifyer, I]; \t \t \t} – MechaScoots

관련 문제