我很难弄清楚这一点,并且在谷歌上找不到对我有帮助的东西。
统一来说,如果脚本派生自 MonoBehaviour,则无法使用“new”关键字对其进行实例化。美好的。所以我一直在研究如何做到这一点,似乎获取 GameObject,然后获取它的 GameComponent 是要走的路......但它不会走得很远......
所以我有一个名为 NetworkManager 的游戏对象。附加到它的是一个名为 NetworkManager 的脚本。我有另一个名为 Main 的 GameObject,附加了一个名为 Main 的脚本(惊喜!)。基本上我想做的是在主脚本中“实例化”网络管理器,这样我就可以做诸如 networkManager.hostServer() 或 networkManager.kickPlayer() 之类的事情。
这是我的 main.cs 脚本:
public class Main : MonoBehaviour {
Player player;
GameObject networkManager;
UiManager uiManager;
// Use this for initialization
void Start ()
{
player = new Player(Network.player, Environment.UserName, 0, 0);
networkManager = GameObject.FindGameObjectWithTag("NetworkManager").GetComponent<NetworkManager>();
uiManager = new UiManager();
}
我得到的错误如下:“无法将类型'Assets.scripts.NetworkManager'隐式转换为'UnityEngine.GameObject'”
当我添加“.GetComponent();”时出现问题 部分。现在似乎很明显,如果该函数正在寻找一个 Component 类型,而不是获得一个 NetworkManager 类型,它就无法工作......这就是我被卡住的地方。我不知道如何让它工作,而且我已经超过了我在谷歌搜索上的 15 分钟限制。