Обновить
-10
Дима@Yabloko9393

Пользователь

2
Подписчики
Отправить сообщение
О боже, про уборку на столе вообще бред. Я ни убираюсь никогда, но у меня все равно чисто. Чисто там где не гадят… поговорка такая есть
КАК? 60% отвлекаются? Я иногда посрать не могу по 2 часа сижу терплю, так затянут процессом… А уж про еду и ваще говорить нечего
Вот так работает)

blockType.Stone = (CreateBlockIntefrace )GetComponent<Stone> ( );

где blockType.Stone объявлена как CreateBlockIntefrace. Класс Stone реализует интерфейс CreateBlockIntefrace.
Я пытаюсь получить интерфейс так:
CreateBlockIntefrace createBlocInterfase =    GetComponent<CreateBlockIntefrace  > ();

И что-то не компилится так?
Кстати даже в этом случае ничего фатального не будет, но тем не менее это полный маразм.
Уважаемый человек, скажите, зачем мобу отрицательное здоровье? С какими мыслями программист должен сидеть чтобы написать
mobHpObject.originalHp = -300;
Во — первых такая возможность есть. Во — вторых есть смысл в коде задавать стартовое значение переменной. И самое главное
Авторы юнити последние маразматики

Зачем вы так комментируете статью посвященную работе в Unity если никогда не работали в Unity?
Признаю так действительно будет лучше. Не зря статью написал. Столько нового узнал)
Вы не так поняли. Разумеется можно поменять значение этой переменной. Она характеризует стартовое значение здоровья. Его можно поменять если мы хотим получить более мощьного моба например. А глобально она объявлена чтобы её можно было менять в самой Unity, и не лазить в код. Ну а вот это
Это открытый член класса, поменять значение которого можно в любом месте кода:
mobHpObject.originalHp = -300;

извините, полный моразм. Можно еще сделать так
mobHpObject.originalHp = "Охо хо я хочу делать игры";

и тогда вообще не будет работать представьте себе! Какой ужас
А у меня по умолчанию не Consolas
Можно создавать классы не являющиеся наследниками MonoBeahavior. Правда в них не будут работать Update, Strat и т.д. Поэтому
Использовать объектно-ориентированный подход в Unity неправильно в принципе

сильно резко сказано
Я имел в виду НЕ одновременно хранить
Хорошо я понял, я почитал про интерфейсы, они действительно решат проблему пустых методов. Но как из одного скрипта(экземпляра класса) получить ссылку на другой экземпляр другого класса(или теперь уже на интерфейс этого экземпляра) Раньше я делал это так:
MyMotor thisMotor = GetComponent<MyMotor>();


А в «вики» имеется такой пример для C#
.....
/// <summary>
    /// Класс приложения.
    /// В данном примере выступает как клиент контекста.
    /// </summary>
    public static class Program
    {
        /// <summary>
        /// Точка входа в программу.
        /// </summary>
        public static void Main()
        {
            // Создаём контекст и инициализируем его первой стратегией.
            Context context = new Context(new ConcreteStrategy1());
            // Выполняем операцию контекста, которая использует первую стратегию.
            context.ExecuteOperation();
            // Заменяем в контексте первую стратегию второй.
            context.SetStrategy(new ConcreteStrategy2());
            // Выполняем операцию контекста, которая теперь использует вторую стратегию.
            context.ExecuteOperation();
        }
    }
.......


На мой взгляд класс Program не так уж и не зависим. Он точно знает когда какую стратегию надо использовать. И если появиться новая стратегия придется менять код в void Main(). В то время как используя
MyMotor thisMotor = GetComponent<MyMotor>();

мы добьемся того что MyBehaviour сам будет выбирать первый попавшийся наследник MyMotor`а (мы наперед знаем что он один). И работать с ним.
Как я понимаю, подобной независимости в примере из вики можно добиться, сделав чтобы в классе Program происходил перебор всех имеющихся скриптов(экземпляров классов) и из них выбирался поддерживающий нужный нам интерфейс?(мы опять же знаем что он всего один на данном игровом объекте) Или я чего-то не так понял?
Спасибо за ответ, буду разбираться
Про абстрактные классы вы абсолютно правы, но только в том случае, если у родительского класса совсем нет реализации методов, а это ведь не всегда так. А вот зачем вам делать полноценного монстра не видимого в списке гейм объектов мне совсем не понятно. Класс наследник должен реализовать все методы родителя. В этом весь смысл. Пустые (никак не пере объявленные методы) нужны например если мы заменили Мотор на другой Мотор, который в данной ситуации не должен реализовать прыжок, или мы захотели Мотор от одного моба повесить на другого. И самое главное, дайте мне ссылку на статью про то как пользоваться интерфейсами. Можно ли потом в переменной одного типа хранить экземпляры разных классов?
Разрешите спросить, как потом хранить в одной переменной экземпляры классов не связанных «родственными» отношениями?
У полиморфизма есть совершенно точное, лаконично определение
Я в статье четко сказал, что все определения можно спокойно найти в интернете. И переписывать их я не стал
)))) Если читать медленно, то все логично
Ну это касается полиморфизма. А вот где его использовать… это возможно, будет интересно не только для новичков
1

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность