Unity脚本:Update方法无法访问Start内定义的List<string>问题求助
解决Unity中Update无法访问Start内定义List的问题
问题核心是变量作用域:你在Start()方法里声明的Questions是局部变量,它的作用范围仅限Start方法内部,Update方法根本无法访问到这个变量。
解决方法很简单,把Questions提升为类的成员变量:
- 在类的内部、所有方法之外声明
List<string> Questions; - 在Start方法里只做初始化和添加元素操作,不需要重复声明变量类型
修改后的完整代码如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class QController : MonoBehaviour { [SerializeField] string Qstring; [SerializeField] Text Qtext; [SerializeField] PlayerController PlayerController; // 将Questions声明为类的成员变量 List<string> Questions; void Start() { string q1 = "Selimiye caminin mimarı bu camiyi ne olarak adlandırmıştır?"; string q2 ="Selimiye Camiyi kim yapmıştır?"; // ... // 仅初始化并添加元素 Questions = new List<string>(); Questions.Add(q2); // 可继续添加其他问题,比如 Questions.Add(q1); // ... } void Update() { // 现在可以正常访问Questions了 Qstring=Questions[PlayerController.randomQnumber]; Qtext.text=Qstring; } }
额外提醒:要确保PlayerController.randomQnumber的取值在0到Questions.Count-1之间,避免触发索引越界错误。
内容的提问来源于stack exchange,提问作者bulletproofspirit
相关产品推荐
相关产品推荐

