2017-05-17 11 views
0

스크립트를 사용하여 플레이어 재료에 스프라이트를 추가하는 방법. 나는 플레이어의 가게 메뉴를 가지고 있는데, 하나의 스프라이트를 선택할 때 플레이어 머티리얼에 추가하고 싶지만 어떻게해야할지 모르겠다. 내 코드가 있지만이 코드를 추가하는 방법을 모르겠습니다. 이것은 내가 작성한 코드이지만 작동하지 않는다. 누군가 playerspriteplayermaterial에 추가하는 법을 말해 줄 수있다. 당신이는 SetTexture() 메서드 또는 mainTexture 속성을 통해 재료의 질감을 설정해야하므로재료 whith 스프라이트 바꾸기

public Material playerMaterial; // --> (player Material)   
public Sprite[] playerSprite; // --> (Sprite i wish to add to the player) 
GameManager.Instance.playerMaterial = GameManager.Instance.playerSprite[index]; 

private void SetSprite(int index) 
{ 
    activeSpriteIndex = index; 
    GameManager.Instance.state.activeSprite = index; 
    GameManager.Instance.playerMaterial = GameManager.Instance.playerSprite[index]; 
    spriteBuySetText.text = "Current"; 
    GameManager.Instance.Save(); 
} 
+0

스프라이트는 재료가 아닙니다. 머티리얼의 텍스처를 변경해야합니다. * – Draco18s

답변

0

Unity3d 소재는 텍스처 이상입니다. 나는 당신이 변경하고 싶은 Main Texture이고 범프 나 조명 맵이 아니라고 가정하고 있습니다.

public Material playerMaterial; // --> (player Material)   
public Sprite[] playerSprite; // --> (Sprite i wish to add to the player) 

private void SetSprite(int index) 
{ 
    activeSpriteIndex = index; 
    GameManager.Instance.state.activeSprite = index; 
    GameManager.Instance.playerMaterial.mainTexture = GameManager.Instance.playerSprite[index].texture; 
    spriteBuySetText.text = "Current"; 
    GameManager.Instance.Save(); 
} 
+0

GameManager.Instance.playerSprite [index]에서 null 체크를 수행하는 것이 좋습니다. playerSprite 배열에 빈 자리가 있으면 전체 라인이 폭발 할 수 있습니다. – ChargerIIC

+0

이 코드는 작동하지 않습니다 : 오류 CS0029 :'UnityEngine.Sprite '형식을'UnityEngine.Texture'로 암시 적으로 변환 할 수 없습니다. –

+0

물어볼 필요가 있습니다. 왜 spriterenderer를 사용하지 않는 것입니까? 왜 당신이 자료를 사용하고 있습니까? – ChargerIIC