Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > Monkey

Monkey Разработка игр на движке Monkey

Ответ
 
Опции темы
Старый 21.08.2016, 09:06   #16
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: MonkeyBehaviour

1.

В отличие от макса в манки нет указателей на функции, нельзя заюзать такие хуки.

2. В твоём случае на юзера возложена забота добавлять хуки, не удобно это - можно просто забыть.

Я решил пойти путём наследования нужных интерфейсов при создании юзерских скриптов.
Разбирать наличие унаследованных интерфейсов - в методе GameObject.AddComponent.

Попутно избавился от MonkeyBehaviour, т.к. он предполагал наличие всех интерфейсов IWith...

Например, хотим юзать LateUpdate, пишем
Class MyLateLogic extends Component implements IWithLateUpdate
    
//тут тело функции LateUpdate
End 
Вот такие интерфейсы доступны юзеру
Interface IWithAwake
    Method Awake
:Void()
End
Interface IWithStart
    Method Start
:Void()
End
Interface IWithUpdate
    Method Update
:Void()
End
Interface IWithLateUpdate
    Method LateUpdate
:Void()
End
Interface IWithDraw
    Method Draw
:Void()
End 
Для ясности можно переименовать слово With в Behaviour.


Ps. на манки2 пока забил - не готовы таргеты и простецкий неудобный иде.
(Offline)
 
Ответить с цитированием
Старый 21.08.2016, 13:15   #17
mingw
ПроЭктировщик
 
Аватар для mingw
 
Регистрация: 01.01.2016
Сообщений: 145
Написано 74 полезных сообщений
(для 164 пользователей)
Ответ: MonkeyBehaviour

Можно легко переделать на прямой вызов метода. И никаких забот на юзера здесь не возложено, если делать грамотно.

Class IWithAwake

    Method 
New()
        
AddHook(AWAKEHOOKSelf)
    
End

    Method Awake
:Void()
End

Class IWithStart

    Method 
New()
        
AddHook(STARTHOOKSelf)
    
End

    Method Start
:Void()
End

Class IWithUpdate

    Method 
New()
        
AddHook(UPDATEHOOKSelf)
    
End

    Method Update
:Void()
End

Class IWithLateUpdate

    Method 
New()
        
AddHook(LATEUPDATEHOOKSelf)
    
End

    Method LateUpdate
:Void()
End

Class IWithDraw

    Method 
New()
        
AddHook(DRAWHOOKSelf)
    
End

    Method Draw
:Void()
End 
(Offline)
 
Ответить с цитированием
Старый 21.08.2016, 19:40   #18
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: MonkeyBehaviour

Наследоваться можно только от одного класса,
но функции Start, Update и прочие могут быть нужны все сразу,
поэтому твой пример не подойдёт.
Ну и суть его примерно сходится с тем, что я в итоге и сделал. (и описал в предыдущем посте)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:17.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com