我无法弄清楚这一点,并且在谷歌上找不到帮助我的东西。如何从另一个游戏对象实例化monobehaviour脚本
统一起来,如果一个脚本派生自MonoBehaviour,它不能使用“new”关键字实例化。精细。所以我一直在研究如何做到这一点,看起来获得游戏对象,然后得到它的游戏组件是要走的路......但它并不会走得太远......所以我有一个叫做GameObject的游戏对象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分钟的限制。
我不明白为什么这个问题是downvoted。这是一个很好的问题 - 请在投票时留下一些反馈意见。 – luqui 2014-10-19 22:10:21