繁体   English   中英

我如何 go 关于保存从同一个可编写脚本 object C# 实例化的多个修改过的预制件

[英]How do I go about saving multiple modified prefabs instantiated from the same scriptable object C#

现在和我一起工作,在这一点上我是一个迷茫的迷路的小孩。

介绍

我有一个库存,可以让我将物品放入装备槽,在我的玩家手/身体上实例化该物品。 例如,我有一个简单的步枪,我把它放在我的装备槽里,它就被创造出来了。 我的玩家现在也可以跑来跑去射击、杀死和解除装备。 BUUUT 我不知道如何保存修改后的变量。

问题知识

我的所有物品在库存中都是可编写脚本的对象,因此我可以轻松创建不同的物品。 Scriptable Object 成立; 一些文本数据,其他东西,以及我想要实例化的武器的实际预制件。 问题是,当我从齿轮槽中取消装备该项目时,它会删除预制件,因为它应该,我不想在游戏中再看到或使用它。 我可以轻松地创建一个升级系统,但保存那些更改的变量是个问题。 我在取消装备时将其删除,并在装备时实例化一个新副本。 我的游戏允许玩家拾取相同的武器,直到库存也满了。

总体问题

  1. 我如何 go 关于保存从同一个可编写脚本 object 实例化的多个修改过的预制件?

  2. 我是否应该弄清楚如何创建一个代表武器的唯一 ID 并允许可编写脚本的 object 实例化这个唯一 ID?

我不确定第二个问题是否可能,但我认为您可能会了解问题的要点,任何解决方案都有帮助,如果我应该重新创建我的库存,我肯定会哭,但我真的想要武器升级系统在我的游戏中,所以我会做它。 感谢你们。

问题

我会有很多各种各样的课程,非常相似(“简单剑”,“钻石剑”,“千兆剑”......)

解决方案

策略模式,而不是创建全新的 object,我将更改此 object 的属性

例子

interface IHandle
{
    public int Speed { get; set; }
}
class SimpleHandle : IHandle
{
    public int Speed { get; set; }

    public SimpleHandle()
    {
        Speed = 5;
    }
}
interface IBlade
{
    public int Damage { get; set; }
}
class SimpleBlade : IBlade
{
    public int Damage { get; set; }

    public SimpleBlade()
    {
        Damage = 5;
    }
}
class Sword
{
    private IHandle _handle { get; set; }
    private IBlade _blade { get; set; }

    public void ChangeHandle(IHandle handle)
    {
        _handle = handle;
    }
    public void ChangeBlade(IBlade blade)
    {
        _blade = blade;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM