unity在另一个脚本/场景中更改对象的文本

安格斯·蒂莫尼(Angus Timoney)

基本上,我在“菜单”场景中有这个Text(scoreText),因此我已经在GameControlMenu.cs中启动了它,但是,当我目前正在尝试从其他脚本GameControl.cs更改其文本时,在我的“主要”场景中

GameControlMenu.cs:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class GameControlMenu : MonoBehaviour
{

public static GameControlMenu instanceMenu;

public Text scoreText;

void Start()
{
    //does stuff but not important to question
}
}

GameControl.cs:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

public class GameControl : MonoBehaviour
{
public static GameControl instance;

public int score = 5;

void Start()
{   
    GameControlMenu.instanceMenu.scoreText.text = "PREVIOUS SCORE: " + score;
}
}

此设置适用于我正在从另一个文件访问的其他两个变量,但是由于任何原因,这总是使我抛出错误:NullReferenceException:对象引用未设置为对象的实例

任何帮助表示赞赏:)

凯恩

您不能执行此操作,GameControlMenu.instanceMenu...因为GameControlMenu您已将其描述为位于另一个场景中,并且该实例不在当前场景中。

但是您可以做的是先将值存储在某个位置,然后GameControlMenu在其他场景加载时使用它,如下所示:

GameControlMenu.cs

public class GameControlMenu : MonoBehaviour
{

    public static GameControlMenu instanceMenu;

    public static string StuffToShowOnScoreText { get; set; }

    public Text scoreText;

    void Awake()
    {
        // So that it loads the text on start
        scoreText.text = StuffToShowOnScoreText;
        // ...
    }
}

GameControl.cs

public class GameControl : MonoBehaviour
{
    public static GameControl instance;

    public int score = 5;

    void Start()
    {   
        // Store the value 
        GameControlMenu.StuffToShowOnScoreText = "PREVIOUS SCORE: " + score;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更改对象中的值会更改另一个对象

根据javascript中的另一个数组更改对象数组的值

在另一个视图控制器中更改对象的属性

JavaScript:如果另一个对象在另一个属性中具有相同的值,则更改对象的值

如何使用另一个对象数组中的一个对象更改对象数组中的对象值?

如何通过比较另一个对象来更改对象的键名?

将场景中的布尔值保存到Unity中的另一个场景

将运行时实例化的对象从一个场景加载到Unity中的另一个场景

如何在Unity中更改皮肤角色并在另一个场景中获取角色

如何使用另一个数组更改对象数组的条目

使用另一个列表更改对象列表的顺序

JavaFX-如何使用另一个类中的场景更改场景?

Unity 如何在另一个场景中激活方法?

在Unity C#中使一个对象从另一个对象中消失

在 Unity 中,如何根据另一个脚本中的随机选择动态修改游戏对象标签?

如何访问另一个场景中存在的游戏对象

如何在另一个场景中引用对象的组件?

如何在javafx中的另一个场景

Swift:在另一个场景中更新了变量

如何从另一个对象中的脚本激活对象上的脚本?

从另一个场景更改后,场景无法完全显示

如何从另一个对象修改对象的私有ArrayList属性(Java)

如何通过GetComponent从另一个游戏对象中的另一个脚本访问变量?

如何在激活一个游戏对象并停用另一个游戏对象的同时从另一个场景加载场景?

Unity-C#在销毁另一个列表中的对象时尝试更改一个列表中项目的标签

使用脚本中的变量将Shell脚本更改为另一个目录

如何从另一个脚本访问脚本中的对象

如何sudo git clone并安全地更改对另一个用户的权限

无法将类对象从一个场景发送到另一个场景