В коде карты глобальные переменные определённых типов (например, целочисленные) инициализируются автогенерируемой функцией InitGlobals.
Она выполняется в одном потоке, у которого ограничение операций примерно в 32 тысячи.
Соответственно, количество глобальных переменных подобных типов ограничено (например, нельзя создать 5 массивов длиной по 8к каждый).
Собственно, вопрос: можно ли делегировать инициализацию глобальных переменных какой-либо другой функции (по сути, удалить кусок кода, отвечающий за автоинициализацию целочисленных массивов из функции InitGlobals)?

Принятый ответ

Совершенно нет смысла в GUI ставить длину массива больше 0, у массива длина увеличивается динамически
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
2 года назад
0
Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
даже наличие 2000 глобальный переменных особо не скажется на производительности, значение лишь имеет их обнуление и само использование в коде карты
ответ
- Я использую это:
struct linkedList
        private  static  constant  timer     period  =  CreateTimer( )
        private                    thistype  prev
        private                    thistype  next


        private stub method destroy takes nothing returns nothing

//          Здесь должен находится Ваш код.

            set  this.prev.next  =  this.next
            set  this.next.prev  =  this.prev

            if ( thistype( 0 ).next == 0 ) then
                call PauseTimer( thistype.period )
            endif

            call thistype.deallocate( this )
        endmethod


        private static method iterate takes nothing returns nothing
            local  thistype  this  =  thistype( 0 ).next

            loop
                exitwhen ( this == 0 )

//              Здесь должен находится Ваш код.

                call this.destroy( )

                set  this  =  this.next
            endloop
        endmethod


        private static method create takes nothing returns thistype
            local  thistype  this  =  thistype.allocate( )

            set  this.next         =  thistype( 0 )
            set  this.prev         =  thistype( 0 ).prev
            set  this.next.prev    =  this
            set  this.prev.next    =  this

//          Здесь должен находится Ваш код.
            
            if ( this.prev == 0 ) then
                call TimerStart( thistype.period, 0.03125, true, function thistype.iterate )
            endif

            return this
        endmethod


    endstruct
static method create takes nothing returns nothing
static method iterate takes nothing returns nothing
method destroy takes nothing returns nothing
Для работы этого двусвязного списка требуется создать 2-е переменные с именами next, prev.
ответ
ScopteRectuS, Переменные инициализируются при инициализации карты, она же вроде как глобальная udg_HeroGFL_owner. Или в коде карты насильно инициализировать?
Они же не локалки
ScopteRectuS, м, реально null возвращает боевая единицы. Смешно. Окей: И как ему определить созданную во время игры боевую единицу?
ответ
Есть играбельная карта с 200к глобалок...
Забей кароче на их число, лишь бы они работали правильно.

2
18
2 года назад
2
Совершенно нет смысла в GUI ставить длину массива больше 0, у массива длина увеличивается динамически
Принятый ответ
1
18
2 года назад
1
Совершенно нет смысла в GUI ставить длину массива больше 0, у массива длина увеличивается динамически
О, не знал об этом.
Спасибо. :)
2
13
2 года назад
2
Ответ выше. Но все же, в любом триггере в виде кода можно написать globals и начать объявлять глобалки и затем endglobals. Но такие переменные нельзя использовать на GUI
Чтобы оставить комментарий, пожалуйста, войдите на сайт.