2016-09-11 7 views
0

새로운 게임 작업을 시작했고 필자가 제공 한 문자 나 숫자에 따라 스프라이트 시트에서 문자를 변경하려고합니다. 필자는 Photoshop에서 숫자 만의 스프라이트 시트를 만들었고이를 테스트하여 Sprite로 Unity에 가져 왔습니다. 그런 다음 스크립트에서 나는 이런 짓을 :C# Unity - 스프라이트 시트에서 스프라이트 바꾸기

public string currLetter; 

public string lettersName; 

Sprite[] lettersAll; 

void Awake() { 

    lettersAll = Resources.LoadAll<Sprite> ("Textures/" + lettersName); 
} 

void Update() { 

    switch (currLetter) { 

    case "0": 
     gameObject.GetComponent<SpriteRenderer>().sprite = lettersAll[0]; 
     break; 

    case "0": 
     gameObject.GetComponent<SpriteRenderer>().sprite = lettersAll[1]; 
     break; 
    } 
} 


나는 그것이 예를 들어 번호 1의 경우 스위치 문에서 오류가 점점 오전 , 그것은 배열 색인이 범위에서 벗어난 것을 말한다 그리고 나는 lettersAll를 설정할 때 그것을 0 sprite했다 공개했다. 내가 도대체 ​​뭘 잘못하고있는 겁니까 ? 내가 해결하기 위해 노력 해왔다이 하루 종일 아무것도하지만 작동 :/

업데이트 : 스프라이트 시트의
이미지 :

enter image description here

+0

'Resources.LoadAll'가 실패한 것 같습니다. 'Resources.LoadAll' 함수 아래에서'Debug.Log (lettersAll.Length);를 실행하여 이것을 증명할 수 있습니다. 저 기록의 비밀을 알려주십시오. 또한 텍스쳐를 넣은 디렉토리는 무엇입니까? 또한 텍스처를 선택하고 가져 오기 설정에 대한 그림을 그립니다. – Programmer

+0

텍스처 폴더는 Projects/Project Name/Assets /에 있으며 가져 오기 설정은 스프라이트로 변경하고 스프라이트 모드를 다중으로 설정하여 문자를자를 수 있으므로 다른 모든 것은 디 펙트에 있습니다 –

답변

0

이 spritesheet는 "자료"폴더 아래에 있습니까? 스프라이트 파일은 "자원/텍스처 /"

아래에 있어야합니다 귀하의 경우를 들어 업데이트 : 아래

  1. Spritesheet : 나는 문제를 복제 할 수 있었다 다음과 같은 일이 올바른지 확인하여 그것을 해결 가/Resources 폴더
  2. 로드 할 스프라이트 시트에는 여러 개의 스프라이트가 있습니다. 모드가 다중으로 설정되어 있더라도 여기에 스크린 샷이 표시되면 스프라이트 시트 A, B, C, D 은 스프라이트가 없기 때문에로드되지 않습니다. 스프라이트 시트 자체가 질감 그대로 Spritesheet E는 제대로

Spritesheet image

+0

작동하지 않았습니까? :/Resources 대신 퍼팅을 시도했지만 아무 것도 작동하지 않음 –

+0

업데이트 솔루션 – Leo

+0

을 확인하십시오. 아무 것도 작동하지 않습니다 ... 문자 그대로 내가 찾은 모든 것을 시도했습니다 ... 컴파일러 오류가 없지만 게임을 테스트 할 때 Array 범위를 벗어난 색인 및 문자 아래에 아무것도 없습니다. –

0

스프라이트 시트의 스프라이트는 다음과 같이 액세스 할 수 없습니다로드됩니다.

Unity는 내부적으로 텍스처처럼 취급합니다. 반면에 Unity는 할당 된 참조에 의해서만 액세스 할 수 있도록 여러 번 만들고 깰 수있는 액세스 권한을 제공합니다.

이미지는 리소스에 저장하지 않는 것이 좋습니다. 필요에 따라로드하는 대신 게임이 시작될 때 즉시로드되므로 이미지를 리소스에 배치하지 마십시오. 시도하십시오 UI Sprite Manager 다음이

관련 문제