2016-09-11 5 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を設定するswitch文のエラーを取得していますそれには0スプライトがありました。私は間違って何をしていますか?私は一日中、この問題を解決しようとしているが、何もうまくいかない:/

更新:スプライトシートの
画像:

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

動作しませんでした:/リソースの代わりに資産を置こうとしましたが、何も動作しません –

+0

更新ソリューション – Leo

+0

を確認してください何も動作していないようです...私は文字通り私が見つけることができたすべてを試しました...コンパイラエラーはありませんが、インデックスが範囲外でlettersAllの下に何もありません –

0

スプライトは、このようにアクセスすることはできません。

Unityは、内部的にはテクスチャのように扱いますが、割り当てられた参照でのみアクセスできるように、複数にして分割するアクセス権を与えます。

必要に応じてロードするのではなく、ゲームの開始時にすぐに読み込まれるため、画像をリソースに配置しないことをおすすめします。 試着UI Sprite Managerこれに続きます

関連する問題