LoadAssetAtPath 与 Load 的区别

一、官方的文档

  

Resources.LoadAssetAtPath

Returns a resource at an asset path (Editor Only).
This function always return null in the standalone player or web player.
This is useful for quickly accessing an asset for use in the editor only

Resources.Load

Loads an asset stored at path in a Resources folder.
Returns the asset at path if it can be found otherwise returns null.
Only objects of type will be returned if this parameter is supplied.
The path is relative to any Resources folder inside the Assets folder of your project,
extensions must be omitted

上面已经解释的很清楚了,接下来我做个实验来验证一下。

二、试验代码

 1 public enum UpDecorationEnum
 2 {
 3     Flower_Category1,
 4     Olive_Category2,
 5     Man_Category3,
 6     Woman_Category4
 7 }
 8
 9 void UnitTest()
10 {
11     Random_Sprite_SpecificEnum(UpDecorationEnum.Flower_Category1);
12 }
13
14 public static void Random_Sprite_SpecificEnum(UpDecorationEnum specific)
15 {
16     string DataPath = Application.dataPath
17     + "/Resources/Environment/Line_Up/Up/" + specific.ToString();
18
19     DirectoryInfo directoryinfo = new DirectoryInfo(DataPath);
20
21     FileInfo[] fileinfo = directoryinfo.GetFiles("*.png");
22
23     List<Sprite> list = new List<Sprite>();
24     foreach (var item in fileinfo)
25     {
26         //Window Editor
27         // [email protected]
28         //Debug.Log(item.Name);
29
30         // E:\Unity3D Project\MenSa_Academy_2\Client\MenSa_Academy
31         // \Assets\Resources\Environment\Line_Up\Up\Flower_Category1\[email protected]
32         //Debug.Log(item.FullName);
33
34         // Assets\Resources\Environment\Line_Up\Up\Flower_Category1\[email protected]
35         //Debug.Log(DataPathToAssetPath(item.FullName));
36
37
38         // Environment/Line_Up/Up/Flower_Category1/[email protected]
39         // Debug.Log(DataPathToResourcesPath(item.FullName));
40
41
42         /// 这个在android 下 是 不行的 使用 DataPathToAssetPath 下面两种都是可以的
43         //  Assets\Resources\Environment\Line_Up\Up\Flower_Category1\[email protected]
44         //  Assets/Resources/Environment/Line_Up/Up/Flower_Category1/[email protected]
45         //Sprite tmp = Resources.LoadAssetAtPath<Sprite>(DataPathToAssetPath(item.FullName));
46
47         /// 全平台适用 只能使用 DataPathToResourcesPath1路径
48         Sprite tmp = Resources.Load<Sprite>(DataPathToResourcesPath(item.FullName));
49
50         if (tmp == null) Debug.Log("Null");
51         else list.Add(tmp);
52     }
53     Debug.Log("Random_Sprite_SpecificEnum" + list.Count);
54 }
55
56 public static string DataPathToAssetPath(string path)
57 {
58     if (Application.platform == RuntimePlatform.WindowsEditor)
59         return path.Substring(path.IndexOf("Assets\\"));
60     else
61         return path.Substring(path.IndexOf("Assets/"));
62 }
63
64 public static string DataPathToResourcesPath(string path)
65 {
66     // E:\Unity3D Project\MenSa_Academy_2\Client\MenSa_Academy
67     // \Assets\Resources\Environment\Line_Up\Up\Flower_Category1\[email protected]
68     if (Application.platform == RuntimePlatform.WindowsEditor){
69         // Environment\Line_Up\Up\Flower_Category1\[email protected]
70         string result =  path.Substring(path.IndexOf("Environment\\"));
71
72         // Environment/Line_Up/Up/Flower_Category1/[email protected]
73         string result1 =  result.Replace("\\","/");
74
75         // Environment/Line_Up/Up/Flower_Category1/[email protected]
76         int index = result1.LastIndexOf(‘.‘);
77         string result2 = result1.Substring(0, index);
78
79         return result2;
80
81     }
82
83     else
84         return path.Substring(path.IndexOf("Environment/"));
85 }
时间: 2024-10-10 01:07:12

LoadAssetAtPath 与 Load 的区别的相关文章

Hibernate之查询中get()和load()的区别,list()和iterate()的区别

[Hibernate]之查询中get()和load()的区别,list()和iterate()的区别 list()查询 //一次性把数据对象取出来 @Test public void findTestList(){ Session s=sessionFactory.getCurrentSession(); s.beginTransaction(); List<Person> persons=s.createQuery("from Person").list(); for(P

ready与load的区别

JQuery里有ready和load事件 $(document).ready(function() { // ...代码... }) //document ready 简写 $(function() { // ...代码... }) $(document).load(function() { // ...代码... }) 他们的主要区别为ready先执行,load后执行. DOM文档加载的步骤: (1) 解析HTML结构. (2) 加载外部脚本和样式表文件. (3) 解析并执行脚本代码. (4)

Hibernate的Session的get()和load()方法区别

hibernate中Session接口提供的get()和load()方法都是用来获取一个实体对象,在使用方式和查询性能上有一些区别. get Session接口提供了4个重载的get方法,分别通过"持久类+主键"和"全类名+主键"以及"锁选项"来获取实体对象. public Object get(Class clazz, Serializable id); public Object get(Class clazz, Serializable i

jQuery document window load ready 区别详解

用过JavaScript的童鞋,应该知道window对象和document对象,也应该听说过load事件和ready事件,小菜当然也知道,而且自认为很了解,直到最近出了问题,才知道事情并不是那么简单. 首先说说window和document,直观上来讲,window代表的是浏览器窗口,而document代表的是浏览器窗口中加载的dom元素,进一步说,document是window的一个属性,window是最顶级的对象. 二者有啥区别呢?很好理解,假设现在有一个浏览器,里边加载的页面特别长,已经超

Hibernate中get()和load()的区别

Hibernate中根据Id单条查询获取对象的方式有两种,分别是get()和load(),来看一下这两种方式的区别. 1. get() 使用get()来根据ID进行单条查询: User user=session.get(User.class, "1"); 当get()方法被调用的时候就会立即发出SQL语句: Hibernate: select user0_.ID as ID1_1_0_, user0_.CREATETIME as CREATETI2_1_0_, user0_.UPDAT

hibernate get和load的区别

区别主要有三点: 1,load返回的是代理对象,等到真正使用对象的内容时才会发出sql语句. 2,get直接从数据库加载,不会延迟. 3,不存在对应记录时表现不一样. 无论是get还是load,都会首先查找缓存(一级缓存),如果没有才会去数据库查找.调用clear()方法可以清除session缓存,调用flush()方法可以强制进行从内存到数据库的同步. 具体分析如下: 在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就

Hibernate单表操作(六)——查询记录get()与load()方法区别

转载请注明:http://blog.csdn.net/uniquewonderq 在上一次的案例中,通过get或者load方法得到的结果一样. 既然得到的结果一样, 那么  get和load方法查询记录的区别是什么呢? 区别一: 在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句,发出selelct语句,去查找这个记录或者说对象,返回本身的持久化对象. load方法会在调用后返回一个代理对象. 该代理对象只保存了实体对象的主键id,直到真正使用对象的非主键属性时才会发出sql

body里面的onload和window.onload,window.load的区别

区别:body里面的onload是在"页面加载完成后执行的动作"window里面的onload是在"页面加载时执行的动作" window.load这个应该只是表明事件方法,但并未执行,比如click表示点击事件,但他并未执行,必须用上onclick他才会执行 例子:在html页面中有一个大图片,想要在图片显示出来后提示一个消息框"图片加载完成",如果你直接写在JS里function(){alert("图片加载完成");}因为代

【hibernate】Hibernate中get()和load()的区别

Hibernate中根据Id单条查询获取对象的方式有两种,分别是get()和load(),来看一下这两种方式的区别. 1. get() 使用get()来根据ID进行单条查询: 1 User user=session.get(User.class, "1"); 当get()方法被调用的时候就会立即发出SQL语句: 1 2 3 4 5 6 7 8 9 10 11 Hibernate:     select         user0_.ID as ID1_1_0_,         use