AR Foundation - Prefab с отслеживанием изображений - PullRequest
0 голосов
/ 24 февраля 2020

Я использую AR Foundation и хочу контролировать временную шкалу порожденного префаба.
Я пытаюсь создать простое приложение AR. Представьте, что я отслеживаю изображение, в котором я появляюсь. Tracked Image Prefab. Допустим, этот сборный дом представляет собой модель дракона с некоторым огненным эффектом на его временной шкале. И я хочу контролировать временную шкалу префабов, когда она создается AR Foundation. Например, я хочу воспроизвести анимацию огня одним нажатием кнопки.

Можно ли поместить слушателя в префаб для запуска временной шкалы в среде выполнения? Как я могу это сделать, пожалуйста? Является ли мое предположение о том, что мне нужно каким-то образом связаться с созданным префабом, верно?

Это объект, и я хочу активировать его временную шкалу для воспроизведения после нажатия кнопки.

enter image description here

Это простой код, с которым я хотел управлять временной шкалой экземпляра префаба.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;

public class TimelineController : MonoBehaviour
{
    public PlayableDirector playebleDirector;

    public void Play()
    {
        playebleDirector.Play();
    }

}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Я решил эту проблему с событиями и делегатами. Все инициированные объекты подписываются на событие и запускают функцию, отвечающую за воспроизведение временной шкалы.

0 голосов
/ 24 февраля 2020

Если я правильно задаю вопрос, первое, что вам нужно, это то, что «превалирует» на сцене, если дракон создан или нет, как Контроллер. Ваш контроллер может, например, быть ответственным за порождение дракона. Когда появится ваш дракон, сохраните эту ссылку (GameObject dragon = Instantiate(dragonPrefab);). Он также может иметь ссылку на вашу кнопку.

С этим вы можете добавить свое поведение драконов к кнопке, например:

button.onClick.AddListener(() => { dragon.dragonSpitFire(); }); //with lambda function
button.onClick.AddListener(dragon.dragonSpitFire); //without lambda function

И внутри вашего метода "dragonSpitFire" вы можете поместить свою временную шкалу или анимацию. Начните метод, как ваша временная шкала. Play ();

...