2017-01-16 3 views
1

Я закончил мой код немного, но я пытался всеми способами исправить ошибкуUnity Engine Vector3 Ошибка

Vector3 является «тип», но используется как «переменная»

строка кода, где эта ошибка случается

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. Я новичок в программировании, так что если я говорю что-то слишком «нуб», пожалуйста, поймите)

ответ

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); 

     } 
    } 

ли это помощь?

EDIT: Думаю, я должен упомянуть, что вы должны взглянуть на Unity's Vector class (если вы посмотрите внимательно, вы увидите, что он говорит struct сверху, но для текущих целей просто игнорируйте это. Классы и структуры - это разные формы типа). Обратите внимание, что там есть конструктор. Этот конструктор - это то, что позволяет вам «создать экземпляр» объекта Vector из класса Vector, превратив чертежи Unity в реальный вектор, который может использовать движок. Переменные, перечисленные выше, которые не имеют никакого значения (и вы не можете получить к ним доступ) до тех пор, пока не создадите объект, потому что они специфичны для этого объекта.

+0

это динамическая библиотека .dll (инъекционная) –

+0

в любом случае это взломать игру. send_createent для нереста сущностей –

+0

Не должно быть никакой разницы, откуда идет функция, и для чего она предназначена. Проблема в том, что ваш код пытался использовать тип Vector3 в функции, когда этой функции нужны переменные (например, конкретные экземпляры этого типа). Вы почти всегда передаете переменные на функции, а не на типы. Если вы попробуете код, который я опубликовал, он должен пройти мимо ошибки компилятора. Тем не менее, вам нужно настроить номера, чтобы иметь смысл в контексте вашей программы. – Jarak

Смежные вопросы