1

我正在制作一个多人问答游戏,我使用 Scriptableobject 来存储我的问答数据。现在我想改变它并使用 Firebase,但我碰壁了。

我有一个可编写脚本的对象来存储我的问题:代码(CSharp):

[CreateAssetMenu(fileName = "QuestionsTF", menuName = "QuestionTF")]
public class QuestionTF : ScriptableObject
{
    public List<Question> questionstf;
}

以及用于处理该问题的 Gamemanager 脚本:

[SerializeField]
    private List<QuestionTF> quizDB;
 
    void Startgame(int index)
    {
        //int index =0;
        unAnswered = new List<Question>();
 
        for (int i = 0; i < quizDB[index].questionstf.Count; i++)
        {
            unAnswered.Add(quizDB[index].questionstf[i]);
        }
   
        SetCurrentquestion();
 
    }

我也在使用类别管理:代码(CSharp):

void Awake()
    {
        for (int i = 0; i < categorybtn.Count; i++)
        {
            Button localbtn = categorybtn[i];
            localbtn.onClick.AddListener(() => Click(localbtn));
        }
    }
    private void Click(Button btn)
    {
        switch (btn.name)
        {
            case "Kategoria 1":
                Startgame(0);
                Debug.Log("start");
                categoryPanel.SetActive(false);
                break;
            case "Kategoria 2":
                Startgame(1);
                categoryPanel.SetActive(false);
                break;
            case "Kategoria 3":
                Startgame(2);
                categoryPanel.SetActive(false);
                break;
        }

我已经建立了与 DB 的连接 - 我可以添加新问题,但显示它们时遇到问题。有什么办法可以直接替换 ScriptableObject?我尝试使用 JsonUtility.From.JsonOverwritte 但我不能使用 JSON 和列表...我认为这很容易但经过这么长时间的处理后,我现在根本看不到正确的方法(顺便说一句,我可以使用这还会在 SO 中创建新问题吗?我在任何地方都找不到此信息)

谢谢

4

1 回答 1

0

在 Scriptable Objects 中,您可以像在其他对象实例中一样更新数据,但请记住,当对象存活时,此数据将保留。

您可以像这样更新 Scriptable Object 中的数据:

QuestionTF脚本

[CreateAssetMenu(fileName = "QuestionsTF", menuName = "QuestionTF")]
public class QuestionTF : ScriptableObject
{
    public List<Question> questionstf;

    public void AddingNewQuestions(IEnumerable<Question> questions)
    {
       questionstf.AddRange(questions);
    }
}
于 2020-07-11T14:35:43.020 回答