Я работаю над переводом проекта Unity из UnityScript на C#. Я уже перевел значительную часть проекта, но столкнулся с некоторыми проблемами:Перевод UnityScript на C#: Array & GetComponent
Первая проблема связана с GetComponent
. У меня есть файл EnnemyController.cs
с множеством функций для получения/установки противников. Но перед всей этой функцией мне нужно инициализировать characterController
.
private CharacterController characterController;
characterController = GetComponent<CharacterController>();
Вы можете ознакомиться с контекстом здесь: http://pastebin.com/U09aH4ZA. Если добавить код, указанный выше в функции Это работает, но не в классе ... Возвращается ко мне следующее сообщение об ошибке:
UnityEngine.Component.GetComponent (string) is a method but is used as a type EnemyController.characterController is a field but is used as a type
Вторая проблема связана с массивом в C#. Точнее с массивом массив, UnityScript что-то вроде этого:
var connected : Array = Array();
static var waypoints : Array = Array();
var objects : Object [] = FindObjectsOfType (AutoWayPoint);
waypoints = Array (objects);
Я понятия не имею, как перевести такого рода вещи, и вы можете увидеть весь файл здесь: http://perche.jeremy.free.fr/sup_scr/AutoWayPoint.js
И для отделки , Я хотел узнать разницу между IEnumerator и IEnumerable.
Да GetComponent() вызывается вне какого-либо метода, потому что я хочу, чтобы получить доступ к этому элементу в любом месте в классе. Итак, если я назову это в Start(), я могу получить доступ к этому элементу в любом месте? Для массива вопрос был больше связан с массивом array = multimimensional array? –
PokeRwOw
Если вы хотите получить доступ в любом месте, элемент должен быть объявлен вне вашего метода, но если вы также хотите получить доступ к элементу в любое время, вы должны получить ссылку, прежде чем что-либо сделать, здесь у вас есть 2 варианта; 1. Объявить элемент как открытый в коде и перетащить элемент из иерархии в ваш скрипт в инспекторе (т. Е. Https://www.youtube.com/watch?v=TnJhhz120js) или 2.- получить ссылку по коду внутри метода, в этом случае вы можете сделать это внутри Start или Awake с помощью GetComponent. /// Синтаксис для многомерного массива на C#: https://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx – mayo
Спасибо за ответы, парень, это мне очень помогло! :) – PokeRwOw