2016-06-21 81 views
0

我想改變點擊圖像按鈕的圖像。 因此,我設置了一個按鈕,並嘗試在assets/Resources/PATH加載PNG文件。 但它總是回來,它使我集結-_-。 有些問題喜歡我的情況,每個人都回答'嘗試移動文件以加載資源/資源路徑,我的情況不能以這種方式修復。Unity C#; Resources.load(PNG文件路徑)始終返回null的原因是什麼?

這是我的代碼。點擊圖片按鈕後,此功能將加載NumCard_1.png文件。資產/資源文件夾中存在NumCard_1.png。

void OnclkMe() 
{ 
    Sprite newSprite = Resources.Load<Sprite>("/NumCard_1") as Sprite; 
    // I already try ("NumCard_1") instead above. 
    if(newSprite==null) 
    { 
     Debug.Log("NULL"); // Always prints "NULL" -_-. 
    } 
    else 
    { 
     Debug.Log(newSprite.name); 
    } 
} 
+0

嘗試這樣的:'雪碧newSprite = Resources.Load (「NumCard_1」)作爲雪碧;' –

+1

負載函數基本上將資源中的任何資源文件夾視爲可能的相對路徑,因此不要在該字符串的前面放置'/'。如果它直接在資源文件夾中,只需使用文件的名稱,否則就像'SubFolder/NumCard_1'。 –

+1

如果您使用Load的通用版本,則不需要'作爲Sprite'。 – cjmarsh

回答

0

在資源文件夾中添加你的精靈。 將紋理類型更改爲Sprite,然後應用。 (Sprite))作爲Sprite;新的Sprite = Resources.Load(「NumCard_1」,typeof(Sprite))作爲Sprite;

2

當在Unity中使用Resources.Load時,它使用「Resources」的相關文件夾 您打算在運行時使用的每個資源必須位於/ Resources下(如果它不存在) - 創建它。 創建此基礎文件夾(在資產下)後,您可以根據自己的偏好創建子文件夾。其次,作爲Sprite的Resources.Load(「/ NumCard_1」)有點被濫用。 通用方法Resources.Load返回T,因此您可以刪除「as Sprite」(它的行爲相同)。

由於Unity使用「Resources」作爲基礎文件夾,所以應在「NumCard」之前刪除「/」。 如果您使用子文件夾,則可能需要將路徑指定爲「Cards/NumCard_1」。

按你的代碼,創建文件夾資產/資源放置在IMG之後,請嘗試以下操作:

Sprite newSprite = Resources.Load<Sprite>("NumCard_1") 
+0

只是爲了強調:資源文件夾位於資產的哪個位置以及您有多少資產並不重要。你可以擁有「資產/紋理/資源」+「資源/資源/材料」+「資源/網格/資源」,這樣可以很好地工作。文件夾結構的邏輯方法顯然是建議的。 –

0

也許你不設置該文件導入精靈的配置?通常PNG將進口作爲紋理,不是精靈

首先,你應該嘗試檢查它像這樣

var obj = Resources.Load("NumCard_1"); 
Debug.Log(typeof(obj)); 

如果obj不爲null,它會告訴你它是什麼類型。如果不是精靈,你就需要去統一編輯,選擇文件,並更改導入類型,巴成精靈

PS使用通用的意思是你可以只寫是這樣

var obj = Resources.Load<Sprite>("NumCard_1"); 

而且OBJ會精靈。如果它不是一個精靈這將是空

+0

typeof(obj)是一個錯誤。 'obj'是一個變量,但用於類型。 –

+0

@김보근對不起'Debug.Log(obj.GetType());' – Thaina

+0

但是它非常有幫助。當我使用斷點時,它給了我obj類型是Texture2D。我可以將這種類型的Texture2D轉換爲UISprite嗎?我使用NGUI。 –

-1

文件夾名稱必須在資產被命名爲「資源的開發」

相關問題