C# 在Unity3D游戏过程中创建/初始化可编写脚本的游戏对象

C# 在Unity3D游戏过程中创建/初始化可编写脚本的游戏对象,c#,unity3d,scriptable-object,C#,Unity3d,Scriptable Object,可编写脚本的对象可以用作Unity3d中的数据容器。它们不需要附加到场景中的游戏对象,但可以在我们的项目中保存为资产。通常,它们被用作仅用于存储数据的资产 我们可以按如下方式创建和添加数据 [CreateAssetMenu(fileName ="New Player Card" , menuName ="Card")] public class GameData : ScriptableObject { public static string name;

可编写脚本的对象可以用作Unity3d中的数据容器。它们不需要附加到场景中的游戏对象,但可以在我们的项目中保存为资产。通常,它们被用作仅用于存储数据的资产

我们可以按如下方式创建和添加数据

[CreateAssetMenu(fileName ="New Player Card" , menuName ="Card")]
    public class GameData : ScriptableObject
    {
        public static string name;
        public int health;
        public spawnDelay;
    }
然后我们可以通过创建->卡片创建资产

我想做的不是为游戏创建资产,而是在游戏过程中根据数据创建资产。并在游戏或场景结束时摧毁他们。 有人有这样做的想法吗? 如有任何指导/想法,将不胜感激。
谢谢。

ScriptableObject仅适用于存储默认值和数据的用途,就像将其作为预设值的存储位置一样。对于运行时更改,您需要使用所需的行为编写c#类。您可以在Start()或Awake()中设置默认值(如果是单行为),或者在c#class构造函数中设置默认值

你可以制作一个不会在加载之间破坏的场景。在该场景的所有游戏对象中,您可以保留和更改数据。此外,还可以避免场景加载之间的对象破坏:


docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html

ScriptableObject仅适用于存储默认值和数据的用途,有点像将其作为预设值的存储位置。对于运行时更改,您需要使用所需的行为编写c#类。你可以在Start()或Awake()中设置默认值,如果它是单行为的,或者在c#class构造函数中设置默认值。感谢你的评论@RustyBucketBay,代表我的要求,我已经试着按照你说的做了,这使得我的游戏不方便,而且内存使用率很高,因为它的场景变化很快。我可以为每个对象保留一个可编写脚本的对象并重写数据吗?您可以创建一个在加载之间不会破坏的场景。在该场景的所有游戏对象中,您可以保留和更改数据。另外,你还可以避免场景加载之间的gamobject破坏:@RustyBucketBay,很好,我会尽量让你知道。如果可以,请将其作为答案发布。非常感谢。