1

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

我们可以如下创建和添加数据。

[CreateAssetMenu(fileName ="New Player Card" , menuName ="Card")]
    public class GameData : ScriptableObject
    {
        public static string name;
        public int health;
        public spawnDelay;
    }

然后我们可以通过 Create->Card 创建资产。

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

4

1 回答 1

1

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

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

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

于 2020-03-11T08:10:41.790 回答