PUNPrefabKey
PUN Prefab Key Component
The PUN Prefab Key component provides a simple, consistent way to identify prefabs when using the Photon PUN 2+ integration.
It ensures each networked prefab has a stable string identifier (or key) that can be referenced during registration and instantiation.
1. Overview
When using Photon PUN, every networked object must be referenced by a unique name string for registration and instantiation.
By default, PUN uses the GameObject’s name, but this can become unreliable when:
Prefabs are renamed or duplicated.
Nested prefab variants share the same name.
You want to define shorter or consistent keys for external systems.
The PUNPrefabKey component solves this by providing a serialized, editor-visible field for an explicit identifier.
2. Component Reference
#if PUN_2_OR_NEWER
using UnityEngine;
namespace MegaCrush.Spawner.PunAdapter
{
/// <summary>
/// Attach to a prefab to give it a stable PUN key.
/// Falls back to GameObject.name if empty.
/// </summary>
public sealed class PUNPrefabKey : MonoBehaviour
{
[SerializeField] private string id;
public string Id => string.IsNullOrWhiteSpace(id) ? gameObject.name : id;
}
}
#endif3. How It Works
When the PUN Pool Prefab Provider or PUN Bootstrap registers prefabs, it queries each prefab for a PUNPrefabKey component.
If the component exists and its
idfield is set, that string is used as the registration key.If
idis empty, it automatically falls back to the prefab’sGameObject.name.
This ensures the same prefab key is used consistently at both registration and instantiation.
4. Usage
Attach the component to any prefab that will be networked via Photon PUN.
Add Component → PUN Prefab KeySet a unique Id in the inspector (for example,
Enemy_Grunt,Pickup_Medkit, etc.).Leave empty if you want to use the prefab name as the key.
During runtime, the PUN integration uses that ID automatically when registering prefabs with the pool.
5. Benefits
Prefab key = GameObject name only
Explicit, serialized key value
Fragile if renamed or duplicated
Stable even after renames
Requires matching names across scenes and assets
Independent, consistent IDs
Harder to track in large libraries
Easy to audit via inspector
6. Integration Notes
Works automatically with:
PUNPrefabRegistrar.RegisterFromScene()PUNPoolPrefabProviderPunBootstrapsample scene
The
PUNPrefabKeydoes not affect local instantiation or object pooling — it only influences prefab registration and lookup.You can safely omit it if you rely entirely on prefab names, but it’s highly recommended for larger projects or shared prefab sets.
✅ Summary
The PUN Prefab Key component helps make Photon PUN integrations robust and maintainable by decoupling network identifiers from prefab names.
Best practice: Add a
PUNPrefabKeyto every networked prefab and assign a clear, stable ID. This keeps prefab registration consistent even as your project grows.
Last updated