(Исправлено setAnimationTickCallback на setAnimateTickCallback) |
|||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | <div class="mw-parser-output"> | + | <div class="mw-parser-output"><div class="mw-parser-output"> |
= <span style="font-size:18.0pt"><span style="line-height:107%">Случайные обновления блоков</span></span> = | = <span style="font-size:18.0pt"><span style="line-height:107%">Случайные обновления блоков</span></span> = | ||
Строка 9: | Строка 9: | ||
Случайные обновления являются сильнейшей оптимизацией и упрощением создания подобных процессов и далее будет описано, почему. | Случайные обновления являются сильнейшей оптимизацией и упрощением создания подобных процессов и далее будет описано, почему. | ||
− | |||
<div class="mw-parser-output"> | <div class="mw-parser-output"> | ||
== Случайный тик == | == Случайный тик == | ||
Строка 16: | Строка 15: | ||
<u style="text-underline:black">Для регистрации события случайного тика используется функция:</u> | <u style="text-underline:black">Для регистрации события случайного тика используется функция:</u> | ||
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="Javascript">Block.setRandomTickCallback(id, function(x, y, z, id, data) { |
// параметры: координаты, а также id и data обновляемого блока | // параметры: координаты, а также id и data обновляемого блока | ||
});</syntaxhighlight> | });</syntaxhighlight> | ||
Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира. | Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира. | ||
− | </div> | + | </div> <div class="mw-parser-output"> |
− | + | <div class="mw-parser-output"> | |
== Случайная анимация == | == Случайная анимация == | ||
Строка 30: | Строка 29: | ||
<u style="text-underline:black">Для регистрации события случайной анимации используется функция:</u> | <u style="text-underline:black">Для регистрации события случайной анимации используется функция:</u> | ||
− | + | <syntaxhighlight lang="Javascript">Block.setAnimateTickCallback(id, function(x, y, z, id, data) { | |
− | + | // параметры: координаты, а также id и data обновляемого блока | |
− | + | });</syntaxhighlight> | |
− | + | '' ''</div> </div> </div></div> | |
− | |||
− | '' | ||
− | </div> |
Многие блоки не требуют обновления каждый игровой тик, это нужно только тем блокам, которые постоянно выполняют какое-то действие. Однако блоки вроде пшеницы или листвы должны иногда обновляться для проверки и обновления состояния, а факела - испускать частицы огня.
Листвы, пшеницы и факелов в мире крайне много, и потому регистрировать их как tile entity не представляется возможным из-за нагрузки, которую они в таком случае дадут.
Потому в MCPE существует механика случайных обновлений блоков, позволяющая блокам некоторого типа в произвольный момент обновляться и выполнять какое-то действие.
Случайные обновления являются сильнейшей оптимизацией и упрощением создания подобных процессов и далее будет описано, почему.
Случайный тик регистрируется как функция для какого-то типа блока (по его ID) и вызывается, когда такой блок где-то произвольно обновляется. Для каждого в мире блока в среднем такое обновление происходит раз в 1.5-2 минуты.
Для регистрации события случайного тика используется функция:
Block.setRandomTickCallback(id, function(x, y, z, id, data) {
// параметры: координаты, а также id и data обновляемого блока
});
Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира.
Данная механика похожа на случайный тик, это тоже случайное событие для блока с каким-то ID и с теми же параметрами. Главное отличие в том, что это событие вызывается чаще, где-то раз в 5-10 секунд, однако только для блоков, рядом с которыми находится игрок.
Это крайне хорошо подходит для создания каких-либо анимаций, вроде испускания частиц, которое актуально только, если игрок находится в непосредственной близости. Для этого события так же существует ограничение, при котором он не вызывает нагрузки, это примерно те же 5-10% от объема пространства рядом с игроком.
Для регистрации события случайной анимации используется функция:
Block.setAnimateTickCallback(id, function(x, y, z, id, data) {
// параметры: координаты, а также id и data обновляемого блока
});