先摘一段Unity 文档上关于Resources.Load的相关说明:
Resources.Load 加载:
加载储存在Resources文件夹中path处的资源
如果查找到资源,返回所在path处的资源,否则返回null。只有type类型的物体将被返回,path相对于Resources文件夹,扩展名必须被忽略。
Resources文件夹可以在Asserts文件夹中的任何位置。
以上是文档中的原话,可以看出,要使用Resources.Load方法加载资源,必须把资源放到固定的Resources文件夹内。我也试过在其他文件夹进行加载,加载失败。
工具是死的,要想用Resources.Load就只能顺着它,在Asserts中新建一个"Resources"文件夹,然后把你的资源放进去,支持子文件夹,所以不用把所有资源一股脑丢进来,可以按类型分为各个文件夹,然后放到“Resources”中。
直接加载Resources中的资源,可以这样写:
- Object prefab = Resources.Load(<span style="background-color: rgb(255, 255, 255);"><span style="color:#cc0000;">"Prefab01"</span></span>);
然后使用进行克隆使用:
- Object prefabClone = Instantiate(prefab);
加载Resources子文件夹中的资源,可以这样写:
Object prefab = Resources.Load("MyPrefab/Prefab01");
这里需要注意的是 "/" 文件夹分隔符,如果写成 “\” 或“\\” 或 “//” 是不行的,熟悉写C++的要注意下
我们可以知道,Resources.Load返回的是 Object 类型,这个类型可以说基本没任何用处,必须要进行类型转换
如果我想在加载的同时就进行类型转换,可以这样写:
- GameObject prefab = Resources.Load("Prefabs/Prefab01") as GameObject;
- Debug.Log(prefab.GetType());<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
- 然后进行克隆,想怎么用就怎么用了。