2017-05-17 3 views
0

スクリプトを使用してプレーヤーのマテリアルにスプライトを追加する方法。私はプレーヤーのショップメニューを持っています。スプライトを選択するのが好きなときは、プレーヤーの素材に追加するのが好きですが、これを行う方法はわかりません。私は自分のコードを持っていますが、これを追加する方法はわかりません。これは私がこのように作ったコードですが、誰かがplayermaterialplayerspriteを追加する方法を教えてくれますか?あなたはSetTexture()メソッドまたはmainTextureプロパティを介して、材料の質感を設定する必要がありますのでスプライトを交換する

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

A Unity3d材料は単なるテクスチャ以上のものです。私はあなたが変更したいバンプまたはライティングマップではなく、メインテクスチャであると仮定しています。

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