我有三个预制件:
所有三个预制件都有一个这样链接的脚本对象:
所有三个预制件的链接脚本对象都是类型
SO_Item
Scriptable Object,看起来像:
using UnityEngine;
[CreateAssetMenu(fileName = "so_Item", menuName = "Scriptable Objects/Item/Item")]
public class SO_Item : ScriptableObject
{
[field: SerializeField] public ItemDetails ItemDetails { get; set; }
}
现在我的问题是那三个预制件,我在我的场景中使用:
这是否为我场景中的每个项目实例化了链接的可编写脚本对象的新实例?
不!
他们将共享相同的
ScriptableObject
实例,因此也共享相同的ItemDetails
实例。
如果你更想要一份副本,你可以最初使用例如
[SerializeField] private SO_Item soItem;
private SO_Item runtimeSOItem;
private void Awake ()
{
runtimeSOItem = Instantiate(soItem);
}
这将创建一个新的独立实例
ScriptableObject
.