C# 访问其他脚本';Unity3D中的s引用
我想要一个对象(游戏),它包含对所有其他对象(玩家、聊天室、控制台等)的引用 我已经创建了这些对象,并在“游戏”对象中引用它们 现在我想引用其他脚本中的“游戏”,并通过它访问它的引用对象 可能吗C# 访问其他脚本';Unity3D中的s引用,c#,unity3d,reference,C#,Unity3d,Reference,我想要一个对象(游戏),它包含对所有其他对象(玩家、聊天室、控制台等)的引用 我已经创建了这些对象,并在“游戏”对象中引用它们 现在我想引用其他脚本中的“游戏”,并通过它访问它的引用对象 可能吗 public class Game : MonoBehaviour { public GameObject network; public GameObject player; public GameObject console;
public class Game : MonoBehaviour
{
public GameObject network;
public GameObject player;
public GameObject console;
public GameObject chat;
public GameObject authentication;
}
public class Chat : MonoBehaviour
{
public GameObject game;
string text = game.console.GetComponent<InputField>().text; // gives an error "GameObject'does not contain a definition for 'console'"
}
公共类游戏:单一行为
{
公共游戏对象网络;
公共游戏对象玩家;
公共游戏对象控制台;
公共游戏对象聊天;
公开游戏对象认证;
}
公共课堂聊天:单一行为
{
公共游戏对象游戏;
string text=game.console.GetComponent().text;//出现错误“GameObject”不包含“console”的定义
}
原来应该这样使用:
string text = game.GetComponent<Game>().console.GetComponent<InputField>().text
string text=game.GetComponent().console.GetComponent().text
很高兴你自己找到了答案。如果您想最小化您编写的代码量,这是一种方法
public class Game : MonoBehaviour
{
public InputField console;
}
public class Chat : MonoBehaviour
{
public Game game;
string text = game.console.text;
}
您可以在其他脚本中创建一个游戏实例。var game=新游戏();我建议在游戏中使用单例模式,因为您很可能只需要一个,但“游戏”对象不会有我需要的引用,因为它们是通过drag-n在Unity inspector窗口中“生成”的-dropping@JoshAdams您不能实例化
monobhavior
s这样,Unity将抛出一个错误。