Unity精华☀️GetInstanceID 和 GetHashCode 的区别

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: Unity精华☀️GetInstanceID 和 GetHashCode 的区别

🟥 两个代码的含义

下面讲解这两个API分别是功能。

//返回xx该实例的哈希代码
xx.GetHashCode
//返回xxx对象的实例id
xxx.GetInstanceID

1️⃣ GetHashCode

GetHashCode为获得该实例的哈希代码。

当该实例为一个物体时,得到的结果和 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()));


相关文章
|
2月前
|
图形学
Unity精华☀️点乘、叉乘终极教程:用《小小梦魇》讲解这个面试题~
Unity精华☀️点乘、叉乘终极教程:用《小小梦魇》讲解这个面试题~
|
2月前
|
设计模式 API 图形学
Unity精华☀️ 「设计模式」的终极详解!
Unity精华☀️ 「设计模式」的终极详解!
|
2月前
|
设计模式 安全 图形学
Unity精华☀️ 面试官眼中的「设计模式」
Unity精华☀️ 面试官眼中的「设计模式」
|
5月前
|
算法
连连看游戏系列教程开篇
连连看游戏系列教程开篇
84 0
|
缓存 图形学
《unity游戏优化》第一章读书笔记
《unity游戏优化》第一章读书笔记
|
小程序 开发者
微信小游戏开发基础系列教程开篇
做个游戏并不简单,或者其实比想象中的还要难,我想对于很多学习游戏开发的新手来讲都会这样觉得。即使是再简单的工具,甚至连代码都不需要写,但是用起来还是一个样,跟着教程一步一步的知道怎么做,脱离了教程就两眼一抹黑,无从下手。
109 0
|
Java API 开发工具
Unity零基础到入门 ☀️| 基础知识入门篇章,看完就可以做游戏啦! | 寻找C站宝藏
❤️寻找C站宝藏-Unity 📢前言 🧡Unity零基础到入门(一) ☀️| 一起走进游戏引擎界大佬——Unity 的陈情往事(^_−)☆ 💛Unity零基础到入门(二) ☀️| Unity下载安装---使用UnityHub下载各个版本的Unity(收藏) 💚Unity零基础到入门(三) ☀️| 轻松学会 Unity界面布局和简单实例——入门级!(^_−)☆ 💙Unity零基础到入门(四) ☀️| 学会这些Unity实用知识点,我也可以做小游戏啦!(^_−)☆ 💜Unity零基础到入门(五) ☀️| 学会这些Unity常用组件,我离开发⭐️3A游戏大作⭐️又近了一步!(^_−)☆
Unity零基础到入门 ☀️| 基础知识入门篇章,看完就可以做游戏啦! | 寻找C站宝藏
|
定位技术 vr&ar 图形学
【Unity3D 灵巧小知识点】 ☀️ | Unity中几个简单又常见的报错异常
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【Unity3D 灵巧小知识点】 ☀️ | Unity中几个简单又常见的报错异常
|
Web App开发 JavaScript 关系型数据库
【精华】Web开发必备资源汇总
导读:原文来自《Best “must know” open sources to build the new Web》,译文由酷壳网陈皓整理编译《开源中最好的Web开发的资源 》。文中收集的资料相当的齐全,供大家学习、参考。
2440 0
|
索引
Unity_新手必懂知识点
翻车了!!!一个小例子带你了解闭包。事故现场:场景:6个button,上方1个text。点击button,text会显示button上的数字。代码如下: //在unity里面赋值public List buttons = new List 事故原因:闭包。
1210 0