Эффекты не должны использовать пользовательские кнопки, клавиатуры, средства выбора или ползунки - эффекты могут использовать только собственные средства выбора и ползунок пользовательского интерфейса. ( Spark AR Review Policies 2.6 )
С помощью средства выбора Native UI вы можете изменять не только текстуры, но и видимость объектов.
Пример:
- Создать новый проект
- Создать несколько плоских объектов на сцене (например, 3 штуки) и назвать их obj0, obj1, obj2 и make они невидимы
- В Capabilities добавьте собственный интерфейс -> Picker
- Добавьте 3 текстуры в проект и назовите их icon_1, icon_2, icon_3 и отметьте опцию «Без сжатия» для всех
- Добавить такой скрипт
const NativeUI = require('NativeUI');
const Textures = require('Textures');
const Scene = require('Scene');
Promise.all([
Textures.findFirst('icon_1'),
Textures.findFirst('icon_2'),
Textures.findFirst('icon_3'),
Scene.root.findFirst('obj0'),
Scene.root.findFirst('obj1'),
Scene.root.findFirst('obj2')
]).then(onReady);
function onReady(assets) {
const texture0 = assets[0];
const texture1 = assets[1];
const texture2 = assets[2];
const objects = [assets[3],assets[4],assets[5]];
const picker = NativeUI.picker;
const index = 0;
const configuration = {
selectedIndex: index,
items: [
{image_texture: texture0},
{image_texture: texture1},
{image_texture: texture2}
]
};
picker.configure(configuration);
picker.visible = true;
picker.selectedIndex.monitor({fireOnInitialValue:true}).subscribe(function(index) {
objects[index.newValue].hidden = false;
if(index.oldValue != undefined)
{
objects[index.oldValue].hidden = true;
}
});
}
Аналогичный официальный пример от разработчиков: там они использовали Native UI picker (script) + patch для скрытия объектов. Запустите Spark AR Studio и создайте новый проект из шаблона «3D Stickers» и посмотрите, как они это сделали. Если у вас нет такого шаблона проекта, обновите Spark AR Studio.