Unity精华☀️GetInstanceID 和 GetHashCode 的区别

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 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精华☀️ 「设计模式」的终极详解!
|
4月前
|
移动开发 JSON JavaScript
一篇文章讲明白Egret白鹭H5小游戏开发入门(一)
一篇文章讲明白Egret白鹭H5小游戏开发入门(一)
77 1
|
5月前
|
算法
连连看游戏系列教程开篇
连连看游戏系列教程开篇
76 0
|
11月前
|
程序员 开发工具 数据库
SwiftUI 项目实战·专栏开篇词
SwiftUI 项目实战·专栏开篇词
79 0
|
缓存 图形学
《unity游戏优化》第一章读书笔记
《unity游戏优化》第一章读书笔记
|
小程序 开发者
微信小游戏开发基础系列教程开篇
做个游戏并不简单,或者其实比想象中的还要难,我想对于很多学习游戏开发的新手来讲都会这样觉得。即使是再简单的工具,甚至连代码都不需要写,但是用起来还是一个样,跟着教程一步一步的知道怎么做,脱离了教程就两眼一抹黑,无从下手。
103 0
|
运维 搜索推荐 安全
第一章 学前必读
第一章 学前必读
|
C# vr&ar 图形学
【Unity3D 灵巧小知识点】 ☀️ | GetType和typeof的使用
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
【Unity3D 灵巧小知识点】 ☀️ | GetType和typeof的使用
|
索引
Unity_新手必懂知识点
翻车了!!!一个小例子带你了解闭包。事故现场:场景:6个button,上方1个text。点击button,text会显示button上的数字。代码如下: //在unity里面赋值public List buttons = new List 事故原因:闭包。
1204 0
下一篇
无影云桌面