globalobjectid
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| globalobjectid [2021/02/08 08:33] – [Prefabs have two GlobalObjectIds] uninomiconadmin | globalobjectid [2025/01/15 04:35] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 9: | Line 9: | ||
| //All notes below only apply to running the game in Play mode in the Editor.// | //All notes below only apply to running the game in Play mode in the Editor.// | ||
| - | When a scene is loaded in play mode, prefabs are merged | + | When a scene is loaded in play mode, prefabs are unpacked |
| - | + | ||
| - | Whatever process that Unity uses to unpack gameobjects(( | + | |
| - | I've seen this mentioned in the profiler as Prefabs.MergePrefabs, | + | |
| - | )) must be determinstic, | + | |
| For example. You may have a prefab in the scene with GID: | For example. You may have a prefab in the scene with GID: | ||
| Line 27: | Line 23: | ||
| ==== Converting a Prefab Gid to an Unpacked Gid ==== | ==== Converting a Prefab Gid to an Unpacked Gid ==== | ||
| - | You can convert between the two using the following formula: | + | You can convert between the two using the following formula:(( |
| + | Source: | ||
| + | )) | ||
| '' | '' | ||
| + | ++++ Example Code| | ||
| + | |||
| + | <code csharp> | ||
| + | private static GlobalObjectId ConvertPrefabGidToUnpackedGid(GlobalObjectId id) | ||
| + | { | ||
| + | ulong fileId = (id.targetObjectId ^ id.targetPrefabId) & 0x7fffffffffffffff; | ||
| + | bool success = GlobalObjectId.TryParse( | ||
| + | $" | ||
| + | out GlobalObjectId unpackedGid); | ||
| + | Assert.IsTrue(success); | ||
| + | return unpackedGid; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ++++ | ||
| + | |||
| + | ===== Bug: Querying deleted objects ===== | ||
| + | When calling '' | ||
| + | |||
| + | For example, in this case, when passed an array of only scene objects: | ||
| + | {{ : | ||
| + | |||
| + | The function will return non-scene objects (the shader editor asset at 205). | ||
| + | {{ : | ||
| + | |||
| + | This seems to be a bug. The correct result should have been '' | ||
| + | |||
| + | I have had some luck < | ||
| + | |||
| + | Update: This is fixed in 2021.1 [[https:// | ||
globalobjectid.1612773209.txt.gz · Last modified: 2025/01/15 04:35 (external edit)