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

(Новая страница: «<div class="mw-parser-output"> = <span style="font-size:18.0pt"><span style="line-height:107%">Случайные обновления блоков</span></span>…»)
 
(Исправлено setAnimationTickCallback на setAnimateTickCallback)
 
(не показаны 3 промежуточные версии 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">
 
== Случайный тик ==
 
== Случайный тик ==
  
Строка 15: Строка 15:
  
 
<u style="text-underline:black">Для регистрации события случайного тика используется функция:</u>
 
<u style="text-underline:black">Для регистрации события случайного тика используется функция:</u>
 +
<syntaxhighlight lang="Javascript">Block.setRandomTickCallback(id, function(x, y, z, id, data) {
 +
    // параметры: координаты, а также id и data обновляемого блока
 +
});</syntaxhighlight>
  
''Block.setRandomTickCallback(id, function(x, y, z, id, data) {''
+
Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира.&nbsp;
 
+
</div> <div class="mw-parser-output">
''// параметры: координаты, а также id и data обновляемого блока''
+
<div class="mw-parser-output">
 
 
''});''
 
 
 
Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира.
 
 
 
 
== Случайная анимация ==
 
== Случайная анимация ==
  
Строка 31: Строка 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 обновляемого блока
});