我已经完成了我的代码,但我正在尝试各种方法来修复错误
Vector3是'type',但用作'variable'
发生错误的代码行
private void Update()
{
bool keyDown = Input.GetKeyDown(KeyCode.Keypad0);
if (keyDown)
{
Client[] array = UnityEngine.Object.FindObjectsOfType<Client>();
for (int i = 0; i < array.Length; i++)
{
Client client = array[i];
client.send_createent(Vector3,Vector3,Vector3,Vector3, 10);
}
}
(产生实体assembly-csharp.dll
代码的代码。我是编程的新手,所以如果我也说“noob”请理解)
答案 0 :(得分:2)
看起来问题正是错误消息告诉您的 - 您正在尝试将类型用作变量。你了解一个类和一个对象之间的区别吗?类型是一个类,变量是一个对象。因此,变量是类型的实例。
以这种方式思考:类型就像你想要创建的东西的蓝图。它列出了预期的房屋/物体/等的结构,但它并不一定要定义所有细节。更重要的是,蓝图实际上并没有给你一个可以居住的房子,只是一个应该是什么样的指南。变量是该房屋的特定实例。您可以定义蓝图中隐含的具体内容,而且,它会为您提供一个可以居住的真实房屋。
所以你需要做的就是更改代码以便你制作一些变量,这样Unity就可以实际使用一些具有相关信息的具体变量。所以它看起来有点像下面(虽然用于创建向量的数字会有所不同,具体取决于您的确切应用):
private void Update()
{
bool keyDown = Input.GetKeyDown(KeyCode.Keypad0);
if (keyDown)
{
Client[] array = UnityEngine.Object.FindObjectsOfType<Client>();
Vector3 vector1 = new Vector3(1.0f, 1.0f, 1.0f);
Vector3 vector2 = new Vector3(1.0f, 1.0f, 1.0f);
Vector3 vector3 = new Vector3(1.0f, 1.0f, 1.0f);
Vector3 vector4 = new Vector3(1.0f, 1.0f, 1.0f);
for (int i = 0; i < array.Length; i++)
{
Client client = array[i];
client.send_createent(vector1,vector2,vector3,vector4, 10);
}
}
这有帮助吗?
编辑:我想我应该提一下你应该看一下Unity's Vector class(如果仔细观察,你会发现它在顶部显示结构,但是出于当前的目的,请忽略它。和结构是不同形式的类型)。请注意,那里列出了一个构造函数。这个构造函数可以让你实例化&#39; Vector类中的Vector对象,将Unity的蓝图转换为引擎可以使用的真实矢量。上面列出的变量在创建对象之前没有任何意义(并且您无法访问它们),因为它们特定于该对象。