如何将GameObject与.Unity场景文件中的资源ID进行匹配

时间:2016-09-02 08:54:30

标签: unity3d

这些是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()返回一个不同的值。

1 个答案:

答案 0 :(得分:0)

第一行是资产本地标识。这个id由Unity3d Remapper解决,它不是可访问的类,没有api可以得到它。 GetInstanceId得到了这个已解析的ID cached int,但是你如何告诉这个id并不是同一个ID 请查看此link以获取有关此工作方式的扩展帮助

您可以使用自己的UID并将其包含在您的对象中:

public string Id = Guid.NewGuid().ToString();