簡體   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