在本文,你將學到如何使用SysTem.IO訪問Editor模式下Assets中的資源哗脖,并且知道該路徑在編譯后的變化。
下面代碼實現(xiàn)訪問預制物并返回預制物名稱的數(shù)組
prefabPath= Application.dataPath + "/Resources/Prefab";
rootExpPath = Application.dataPath + "/Resources/Emoj";
modelName = Directory.GetFiles(prefabPath, "*.prefab"); //------CodeForDebug----
foreach (var item in modelName)
{
Debug.Log(item); //返回的是文件全路徑,且最后文件名被反斜杠隔開翘狱,形如:D:/Work/Game/New Unity Project/Assets/Resources/Prefab\cake2.prefab鼎兽;
}
DirectoryInfo _fileInfo = new DirectoryInfo(prefabPath); //------------------↓↓↓↓↓↓獲取已知模型的名稱信息,方便表情文件夾的動態(tài)確認和生成
FileInfo[] ff = _fileInfo.GetFiles("*.prefab");
int count = ff.Length;
modelName = new string[count];
for (int i = 0; i < count; i++)
{
modelName[i] = ff[i].Name.Substring(0, ff[i].Name.Length - 7);
} //--------------------↑↑↑↑↑↑
使用System.IO方式訪問Resouse中預制資源或者預制物并不理想漓糙,Unity Editor模式下OK铣缠,打包后Application.DataPath
訪問的地址會存在偏差(如圖所示);
上段為EXE運行時昆禽,下端為Editor模式下
所以蝗蛙,如果獲取Resouce文件夾下所有預制物的名稱,還是建議用:
public string[] modelNames;
private GameObject [] modelList;
void Start () {
modelList = Resources.LoadAll<GameObject>("Prefab");
if (modelList!=null&&modelList.Length>0)
{
modelNames = new string[modelList.Length];
for (int i = 0; i < modelList.Length; i++)
{
modelNames[i] = modelList[i].name;
}
}
}
關(guān)鍵API就是Resouce.LoadAll()
+遍歷賦值modelList[i].name
簡單實用醉鳖;
但是System.IO還是有大用處的捡硅,譬如游戲打包OK后,依舊可以訪問外部配置文件(XML或Json)甚或是其他需要后期迭代的游戲資源盗棵,譬如:Texture壮韭、模型、音樂~~
標簽:Unity3D纹因、文件讀取喷屋、特殊文件夾、Application.DataPath瞭恰、System.IO
快捷訪問:
- Unity3D 如何設(shè)置CubeMap
- Unity3D UGUI Button OnClick事件統(tǒng)一管理
- UGUI Slider onValueChanged事件統(tǒng)一管理
- UGUI Toggle onValueChanged事件統(tǒng)一管理
- Unity3D監(jiān)測按鍵輸入(快捷鍵)的有效方法
- Unity3D Editor模式下的System.IO數(shù)據(jù)訪問 ←您在這里
- Unity3D 掛載的腳本取消勾選居然還會運行1泼伞!
- Unity 代碼動態(tài)勾選或取消材質(zhì)球上的選項
- Unity SerializeField序列化字段導致Bug的跳坑筆記