首页 > 解决方案 > 将选定的 TextAsset 分配给新的 TextAsset 变量(Unity、C#)

问题描述

我正在为我的文本游戏开发一项功能,该功能将使玩家从一个场景(主菜单)中选择他想通过按钮玩什么级别,并且有关他选择的信息将传递到特定的下一个场景(游戏场景) TextAsset 将加载。

代码:

        foreach (TextAsset d in DeckList)
        {
        if (d.name == CurrentDeckText)
            {
            questions = GetFile(d);
            }
        }

目前,我已在游戏场景开始时将所有级别的所有文本(效率低,我知道)加载为 TextAssets,并将它们全部放入列表(DeckList)中。当我单击主菜单中的按钮时,代码会传递级别的字符串名称(CurrentDeckText)。然后将级别的名称与加载的级别列表中的 TextAssets 的名称进行比较。如果匹配,则应进一步处理所选级别。

问题在于最后一步。Unity 向我抛出此错误 NullReferenceException: Object reference not set to an instance of an object Core.Start () (at Assets/Scripts/Core.cs:172)

我检查了:

  1. d.name 和 CurrentDeckText 都是字符串并且它们匹配
  2. 所有文本都加载到 DeckList
  3. question = GetFile("name of level") 当我将单个级别硬编码到其中时工作正常

我不知道有什么问题。我怀疑有一些我没有看到的微不足道的东西。你能帮我吗,互联网?

标签: c#unity3dtext

解决方案


所以我找到了一种解决方法 - 我没有将字符串与级别名称匹配,而是将列表中的索引与级别名称匹配,而不是实际名称,我将级别按钮命名为 0,1,2,3,.. 并将其传递给当前甲板文本。

不知道为什么它会起作用,但确实如此。


推荐阅读