2017-07-13 25 views
0

私のUnityプロジェクトでは、キャンバスの下で空白のUI画像を作成しました。 一方、assetsフォルダには複数のPNGがあります。 スクリプトを介してフォルダからUIイメージをランダムPNGに設定します。 どうすればいいですか?スクリプトをUIイメージまたはUIキャンバスに添付する必要がありますか?誰かが私にサンプルスクリプト(js、C#ではなく)を表示してもらえますか?ありがとう。Unity:(js)PNGを資産フォルダにUI画像に読み込む

答えて

0

Resourcesという名前のフォルダとSpritesという名前のフォルダを作成します。あなたのスプライトをこのフォルダに入れてください(@SurajSで指摘されているように、画像は画像インポート設定でSpriteテクスチャタイプでなければなりません)。

画像要素を作成し、以下のUnityScriptを添付:

function Start() { 
    var image : UnityEngine.UI.Image = GetComponent.<UnityEngine.UI.Image>(); 
    var sprites : Object[] = Resources.LoadAll("Sprites", Sprite); 
    image.sprite = sprites[Random.Range(0, sprites.Length)] as Sprite; 
} 

よりよい解決策を(より効率的な)

したいゲームオブジェクト(あなたのイメージ、あなたに次のスクリプトを添付キャンバス、または空の場合もあります)

#pragma strict 

public var image : UnityEngine.UI.Image; 

public var sprites : Sprite[]; 

function Start() { 
    image.sprite = sprites[Random.Range(0, sprites.Length)] ; 
} 

次に、インスペクタで、& imageフィールドに画像コンポーネントを格納しているゲームオブジェクトをドロップし、すべてのスプライトをspritesフィールドに配置します。


スプライトの名前を取得するには、次のように行うことができます。

var names : String[] = new String[sprites.Length] ; 
for (var i = 0 ; i < names.Length ; ++i) { 
    names[i] = sprites[i].name; 
} 
+1

また、PNGのインポート設定は、スプライトやUI 2Dに設定されていることを確認してください。 –

+0

ありがとう、それは働いた!フォローアップの質問:一方で、PNGの名前を含むストリングの配列を作成したいのですが、その方法はありますか? –

+0

更新された回答を確認してください。それがあなたを助けたならば、受け入れることを忘れないでください。 – Hellium