2017-05-17 6 views
0

Wie Sprite zu Spielermaterial mit Skript hinzufügen. Ich habe ein Shop-Menü mit Spielern und wenn ich ein Sprite auswählen möchte, möchte ich es gerne dem Spielermaterial hinzufügen, aber ich weiß nicht, wie ich das machen soll. Ich habe meinen Code aber genau das kann ich nicht hinzufügen. Dies ist mein Code, den ich so gemacht habe, aber nicht funktioniert. Kann mir jemand sagen, wie man playersprite zu playermaterial hinzufügt.Ersetzen Material mit Sprite

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

Sprites sind keine Materialien. Sie müssen die * Textur des Materials ändern. * – Draco18s

Antwort

0

A Unity3d Material ist mehr als nur eine Textur, so dass Sie die Textur des Materials über die SetTexture() -Methode oder mainTexture Eigenschaft festlegen müssen. Ich gehe davon aus, dass es sich um die Haupttextur handelt, die Sie ändern möchten, und nicht um die Relief- oder Beleuchtungskarten.

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

Sie können auch eine Null-Überprüfung von GameManager.Instance.playerSprite [index] in Betracht ziehen. Die ganze Zeile könnte explodieren, wenn Sie einen leeren Platz in Ihrem playerSprite-Array haben. – ChargerIIC

+0

Dont arbeiten diesen Code es sagt: Fehler CS0029: Kann Typ 'UnityEngine.Sprite 'nicht implizit in' UnityEngine.Texture' konvertieren. –

+0

Ich muss fragen - warum benutzt du nicht einfach einen Spriterenderer? Warum benutzt du ein Material? – ChargerIIC