51 lines
1.8 KiB
C#
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();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|