Макросы widget и include в Twine 2 Sugarcube 2 отличаются тем, что widget позволяет создавать пользовательские макросы, используя TwineScript, а include позволяет вставлять содержимое одного пассажа в другой, используя HTML1. Widget-макросы обычно используются для создания повторяющихся элементов интерфейса, таких как диалоговые окна, кнопки или индикаторы2. Include-макросы обычно используются для организации кода, который нужно выполнить в разных пассажах, таких как инициализация переменных, проверка условий или запуск скриптов3.
Основное преимущество widget перед include заключается в том, что widget может принимать параметры и выражения, подобно другим макросам Sugarcube. Это означает, что вы можете передавать разные значения в widget и использовать их внутри него через специальную переменную $args. Например, вы можете создать widget <<say>>, который выводит текст в диалоговом окне с изображением персонажа. Вы можете вызывать этот widget с разными параметрами, такими как имя персонажа, его эмоция и его реплика. Например:
<<widget “say”>> <div class=“dialog”> <img src=“$args[0].image” alt=“$args[0].name”> <p><strong>$args[0].name</strong>: $args1</p> </div> <</widget>>
<<set $bob to {name: “Bob”, image: “bob.png”}>> <<set $alice to {name: “Alice”, image: “alice.png”}>>
<<say $bob “Hello”>> <<say $alice “Hi”>>
Include не может делать этого, потому что он всегда вставляет один и тот же пассаж без возможности изменять его содержимое. Вы можете использовать include для того же эффекта, но вам придется создавать дополнительные переменные и устанавливать их перед каждым вызовом include. Например:
<<set _speaker to $bob>> <<set _text to “Hello”>> <<include “Say”>>
<<set _speaker to $alice>> <<set _text to “Hi”>> <<include “Say”>>
Пассаж Say:
<div class=“dialog”> <img src=“_speaker.image” alt=“_speaker.name”> <p><strong>_speaker.name</strong>: _text</p> </div>
Как видите, это гораздо менее удобно и эффективно.
Надеюсь, это помогло вам понять разницу между макросами widget и include в Twine 2 Sugarcube 2. Если у вас есть еще вопросы по этой теме или по другим аспектам Twine 2 Sugarcube 2, я буду рад помочь. 😊
1: <<display>> vs <<widget>> : twinegames - Reddit2: SugarCube v2 Documentation - Motoslave.net3: SugarCube - Twine Cookbook