|  
 哈喽大家好,你的橙哥突然出现~
 本系列博客地址:传送门
  
 
 
 一、两个代码的含义下面讲解这两个API分别是功能。 //返回xx该实例的哈希代码
xx.GetHashCode
//返回xxx对象的实例id
xxx.GetInstanceID
 1、GetHashCodeGetHashCode为获得该实例的哈希代码。当该实例为一个物体时,得到的结果和 GetInstanceID 相同。
 
 2、GetInstanceID在场景中的每一个实例化出来的对象(实体GameObject、组件等),都有一个唯一固定且各不不同的instanceID。GetInstanceID便可以得到此ID。
 无论是重新打开编辑器,还是EXE文件,这个instanceID都不会发生变化;不管运行多少次,实体的instanceID或者是实体挂载的组件的instanceID都是唯一且固定的。同一个Prefab,不管是Inspector挂上去的还是用Resource.Load()动态加载的,这个ID都是一样的。只有当Instantiate成对象之后,每个对象间的ID才会有区别。
 2.、不同的Prefab,ID是不一样的
 
 
 二、两个代码的区别GetHashCode: 不仅可以获取物体、脚本等实例化出来物体的ID,还能获取声明变量的哈希值。
 
 GetInstanceID: 只可获取实例化出来对象的ID,声明的变量是没有该值的
 
 
 三、API的应用场景1、比较不同 var foundobjects = GameObject.FindGameObjectsWithTag("TagName");
foreach (GameObject o in foundobjects)
{
	if (o.GetInstanceID() == gameObject.GetInstanceID())
	continue;
}
 
 2、找到模型、图片等资源在Assets中的位置 Sprite sprite = GetComponent<Image>().sprite;
print(AssetDatabase.GetAssetPath(sprite.GetInstanceID()));
 
 
 好啦,这就是我们本节知识,
 我们下节再见!
  
 如果你有 技术的问题 或 项目开发
 都可以加我的vx(skode250) 和我聊一聊你的故事🧡 |