【发布时间】:2018-10-11 14:11:55
【问题描述】:
这是我的第一个网络项目。我尝试遵循一些教程,这就是我遇到的问题:我试图在单击按钮时简单地更改布尔值。按钮在一个场景中,而下方的文本对象在另一个场景中。所以我在两个不同的场景中运行同一个网络管理器。我意识到这不是传统的,但对于我的项目来说必须是这种方式。我现在正在寻找的只是它来更改文本,一旦我了解这是如何发生的,我相信我可以弄清楚其余的。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
public class textChanger : NetworkBehaviour
{
Text text;
[SyncVar]
bool change = false;
// Use this for initialization
void Start ()
{
text = gameObject.GetComponent<Text>();
}
// Update is called once per frame
void Update ()
{
if(change)
{
text.text = "it worked";
}
}
[Command]
public void CmdChangeText()
{
change = true;
}
}
如果我通过按键将“更改”设置为 true,则代码将完全按照应有的方式运行,文本会更改。但是当我单击另一个场景中的按钮时它不起作用。我正在使用 Networking Hud,这两个场景实际上是相连的。但是变量没有更新。
在第一张图片中,“Text”游戏对象正在运行“Text Changer”脚本。在第二张图片中,按钮也运行着通用的“游戏对象”对象。您可以在“Text Changer”脚本上调用“CmdChangeText”方法的按钮 onClick 区域中看到它被引用。
所以在我看来,一切看起来都应该正常工作,但事实并非如此。有人可以帮忙吗?
【问题讨论】:
标签: unity3d