UNITY:数组被删除的元素仍然显示

问题描述 投票:0回答:0

我用数组中的文本块制作了一个文本游戏。 问题是,即使我删除了文本并保持数组清晰,它仍然会显示在我的游戏中! 代码很简单,就是我的数组:

public StoryBlock[] storyBlocks = { 


// a storyblock is build like that: String,String,String,Int,Int
// First string: Main text of the game
// 2-3 String: 2 option buttons.
// 2 intigers: each one assigned to coresponding option button:ID,when clicked, moves a player to other story block 

/* block0 */new StoryBlock("GameText","ButtonWithOption1", "ButtonWithOption2", 1, 2),
/* block1 */new StoryBlock("GameText2","ButtonWithOption1", "ButtonWithOption2", 2, 2), 
/* block2 */new StoryBlock("GameTex3","ButtonWithOption1", "ButtonWithOption2", 0, 1),  
};
StoryBlock currentBlock;

以下是 StoryBlock 的构建方式

public class StoryBlock {

    public string story;
    [Header("Button 1")]
    public string option1Text;
    public int option1BlockId;
    [Header("Button 2")]
    public string option2Text;
    public int option2BlockId;
     
    public StoryBlock(string story, string option1Text = "", string option2Text = "",
                
    int option1BlockId = -1, int option2BlockId = -1,) {
        
        this.story = story;
        this.option1Text = option1Text;
        this.option2Text = option2Text;
        this.option1BlockId = option1BlockId;
        this.option2BlockId = option2BlockId;

    }

我使用的所有 UI 元素:

  public TMP_Text mainText;
  public Button option1;         
  public Button option2;

此方法将按钮和游戏文本中的基本文本更改为 StoryBlock 数组中的文本:

public void DisplayBlock(StoryBlock block) {
        mainText.text = block.story;                    
        option1.GetComponentInChildren<TMP_Text>().text = block.option1Text;
        option2.GetComponentInChildren<TMP_Text>().text = block.option2Text;
        currentBlock = block;
     
    }

当我单击按钮并根据我按下的按钮更改游戏故事时会发生这种情况:

public void DisplayOption1(){
        DisplayBlock(storyBlocks[currentBlock.option1BlockId]);  // BUTTON NR1 METHOD
    }
     public void DisplayOption2(){
        DisplayBlock(storyBlocks[currentBlock.option2BlockId]); // BUTTON NR2 METHOD
    }

当我的带有脚本的游戏对象激活时,我在这里写下我想要显示的块 (第0块是第一个)

 void Start()
    {   
          DisplayBlock(storyBlocks[0]); 
    }  

发生的事情是......我现在有超过20个故事块,即使我删除了其中的3/4,保存脚本,按“播放”,删除的文本仍然会显示!我真的不知道它怎么可能仍然出现,当我删除它后它没有写在脚本的任何地方。 我什至录制了一个视频,显示即使数组的每个元素都以相同的方式编写,但取决于我要显示哪个,它要么不显示,要么部分显示,这根本没有意义。链接:https://www.youtube.com/watch?v=kASbBg7ccXE 预先感谢您的帮助。

我试着在另一个项目中这样做,将它分配给其他文本元素,但没有任何效果......

c# arrays unity3d text 2d
© www.soinside.com 2019 - 2024. All rights reserved.