com.unity.uiextensions/Scripts/Utilities/Serialization/ObjectIdentifier.cs

51 lines
1.8 KiB
C#

//Add an ObjectIdentifier component to each Prefab that might possibly be serialized and deserialized.
//The name variable is not used by the serialization; it is just there so you can name your prefabs any way you want,
//while the "in-game" name can be something different
//for example, an item that the play can inspect might have the prefab name "sword_01_a",
//but the name (not the GameObject name; that is the prefab name! We are talking about the variable "name" here!) can be "Short Sword",
//which is what the palyer will see when inspecting it.
//To clarify again: A GameObject's (and thus, prefab's) name should be the same as prefabName, while the varialbe "name" in this script can be anything you want (or nothing at all).
namespace UnityEngine.UI.Extensions
{
public class ObjectIdentifier : MonoBehaviour
{
//public string name;
public string prefabName;
public string id;
public string idParent;
public bool dontSave = false;
public void SetID()
{
id = System.Guid.NewGuid().ToString();
CheckForRelatives();
}
private void CheckForRelatives()
{
if (transform.parent == null)
{
idParent = null;
}
else
{
ObjectIdentifier[] childrenIds = GetComponentsInChildren<ObjectIdentifier>();
foreach (ObjectIdentifier idScript in childrenIds)
{
if (idScript.transform.gameObject != gameObject)
{
idScript.idParent = id;
idScript.SetID();
}
}
}
}
}
}