这些是Unity场景的文件内容
--- !u!1 &341095427
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 143402, guid: e58d4c3907fdc484faf3ab7001288374, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 341095443}
m_Layer: 8
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
此对象的序列化资源ID位于第一行( 341095427 )。我的脚本是从Unity菜单调用的编辑器。我正在遍历当前活动场景中的所有GameObjects。有没有办法获得GameObject的上述Id?不幸的是,GetInstanceID()返回一个不同的值。
答案 0 :(得分:0)
第一行是资产本地标识。这个id由Unity3d Remapper解决,它不是可访问的类,没有api可以得到它。 GetInstanceId得到了这个已解析的ID cached int,但是你如何告诉这个id并不是同一个ID 请查看此link以获取有关此工作方式的扩展帮助
您可以使用自己的UID并将其包含在您的对象中:
public string Id = Guid.NewGuid().ToString();