Ответ: Передача переменной в метод
1. Все скрипты проекта компилируются одновремено. Так что наследники получат все что имеет класс Unit в не зависимости в каком файле или папке проекта ты его создашь. Главное чтобы скрипты User и AI были в файлах с соответствующим именем (потому что их надо вешать на объекты как скрипты).
2. В функцию MoveUnit(Unit unit) можно будет передать и экземпляр AI и User т.к. они оба будут наследниками Unit. |
Ответ: Передача переменной в метод
Цитата:
Цитата:
Цитата:
Цитата:
Последний вопрос не понял. |
Ответ: Передача переменной в метод
Хм, пробую передать в метод переменную через интерфейс, компилятор ругается что я пытаюсь передать field как property, понимаю что несоответствие типов, тогда мне либо поле нужно объявить как свойство, либо научиться их передавать. Ниже скрипт (понимаю что много огорода). Задача передать интерфейсом поле UnitAngleNS и увеличить на 1. Для теста само собой.
PHP код:
|
Ответ: Передача переменной в метод
Direction в твоем случае свойство типа int (как поле), а не тип переменной который можно передавать в функицю. Правильно
вот так: PHP код:
PHP код:
|
Ответ: Передача переменной в метод
Хм, а как быть с переменной UnitAngleNS которую я хотел передать или я интерфейс вообще не в ту степь повел? получается передаем свойство, но оно пустое и самодостаточное, как в него положить нужную мне переменную?
|
Ответ: Передача переменной в метод
Ты все еще привязываешь себя к переменным. Но теперь ты можешь передать объекты, обладающие одинаковыми свойствами в функцию обработки. Пусть функция меняет эти свойства объектов, а не непонятные переменные.
И на сколько я понял ты немного не так применил интерфейс. PHP код:
PHP код:
вот так: PHP код:
PHP код:
|
Ответ: Передача переменной в метод
фух, разобрался с реализацией интерфейса при передаче в него одного свойства. Действительно зациклился на переменных, использование свойств более удобно (ура! +1 к опыту программирования).
Но теперь возник вопрос, а как быть если у объекта (this) есть два свойства и надо выборочно передать в метод лишь одно из них, ну или изменить одно из них? Создал свойства DirectionNS и DirectionEW у объекта, изначально равны нулю. При передаче в метод RotatePlayerUnit надо увеличить либо одно из них, либо второе в зависимости от значения переменной UnitDirection. Есть способ? PHP код:
|
Ответ: Передача переменной в метод
Я вероятно все еще не понимаю что за система у тебя, что она просто меняет переменные не зная что она меняет и все счастливы) Ты все еще держишься за изменение переменных и интерфейс не применяешь как таковой.
По коду PHP код:
PHP код:
И тут в коде нет того, что ты хочешь избежать - исключения конструкций if или case. Они есть и довольно сложные. На мой взгляд твоя задача сводится к следующему: PHP код:
PHP код:
|
Ответ: Передача переменной в метод
действительно, я все по ходу усложнил, положившись на понимание интерфейсов. Предложенное решение с передачей и обработкой функции - то, что надо.
Наверное еще не дорос я до оптимизации реализации кода, ну да ладно, буду стремиться. Огромное спасибо за разъяснения, вынес из топика очень много нового! |
Ответ: Передача переменной в метод
Еще один вопрос для понимания алгоритмов, как я понял при организации классов в Unity переменные следует использовать для расчетов, а свойства для хранения параметров игровх объектов.
А моей ошибкой было то, что я хранил значения параметров в переменных так? Т.е. если я переведу все необходимые параметры в свойства то смогу гораздо проще обрабатывать взаимодействия объектов? и еще пара вопросов: - что еще может содержать в себе свойство кроме значений? (или только значения?) - может ли одно свойство содержать в себе несколько значений? Понимаю что вопросов много, но они неизбежно возникают при изучении нового материала. Зато интересно! :) |
Ответ: Передача переменной в метод
Цитата:
Подробнее о свойствах http://msdn.microsoft.com/ru-ru/library/w86s7x04.aspx И поле и свойство может содержать в себе экземпляр класса или структуры, который может иметь N полей. А еще они могут содержать ссылки на методы - делегаты. |
Ответ: Передача переменной в метод
но чтобы вывести значение элемента свойства в инспектор в принципе можно в скрипте присвоить их значения какому-то полю, например хранилищу значения свойства? - ну для тестирования кода например
и еще разница в доступе к полям и свойствам конкретного объекта, хотел узнать так правильно? : GameObject.Property++; //изменение свойства GameField++; // изменение поля А при доступе к объекту из других классов, как правильно делать подобное? |
Ответ: Передача переменной в метод
По обращению свойство и поле не отличаются. Т.е. объект.свойство++ и объект.поле++ в коде записываются одинаково. Отличие в том, что в свойстве при этом сработает сначала метод get для взятия значения, а потом метод set для установки нового инкрементированного значения.
Я как-то писал маленькую статейку на тему обмена данными между скриптами |
Ответ: Передача переменной в метод
полезная статья, спасибо!
|
Ответ: Передача переменной в метод
Цитата:
И для чего можно использовать подобное,хотя бы простенький пример? Заранее спасибо ) Цитата:
PHP код:
|
Часовой пояс GMT +4, время: 01:52. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot