Случайные обновления блоков — различия между версиями

(Исправлено 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="unknown">Block.setRandomTickCallback(id, function(x, y, z, id, data) {  
+
<syntaxhighlight lang="Javascript">Block.setRandomTickCallback(id, function(x, y, z, id, data) {  
 
     // параметры: координаты, а также id и data обновляемого блока  
 
     // параметры: координаты, а также id и data обновляемого блока  
 
});</syntaxhighlight>
 
});</syntaxhighlight>
  
 
Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира.&nbsp;
 
Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира.&nbsp;
</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) {
''Block.setAnimationTickCallback(id, function(x, y, z, id, data) {''
+
    // параметры: координаты, а также id и data обновляемого блока
 
+
});</syntaxhighlight>
''// параметры: координаты, а также id и data обновляемого блока''
+
''&nbsp;''</div> </div> </div></div>
 
 
''});&nbsp;''
 
</div>
 

Текущая версия на 17:01, 20 апреля 2020

Случайные обновления блоков[править]

Многие блоки не требуют обновления каждый игровой тик, это нужно только тем блокам, которые постоянно выполняют какое-то действие. Однако блоки вроде пшеницы или листвы должны иногда обновляться для проверки и обновления состояния, а факела - испускать частицы огня.

Листвы, пшеницы и факелов в мире крайне много, и потому регистрировать их как 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 обновляемого блока
});