链接到预制件的可编写脚本的对象是否只实例化一次?

问题描述 投票:0回答:1

我有三个预制件:

three prefabs

所有三个预制件都有一个这样链接的脚本对象:

prefab 1 with scriptable object

prefab 2 with scriptable object

prefab 3 with scriptable object

所有三个预制件的链接脚本对象都是类型

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; }
}

现在我的问题是那三个预制件,我在我的场景中使用:

Prefabs/Items used in scene

这是否为我场景中的每个项目实例化了链接的可编写脚本对象的新实例?

c# unity3d
1个回答
0
投票

不!

他们将共享相同的

ScriptableObject
实例,因此也共享相同的
ItemDetails
实例。


如果你更想要一份副本,你可以最初使用例如

[SerializeField] private SO_Item soItem;

private SO_Item runtimeSOItem;

private void Awake ()
{
    runtimeSOItem = Instantiate(soItem);
}

这将创建一个新的独立实例

ScriptableObject
.

© www.soinside.com 2019 - 2024. All rights reserved.