Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android DLC系统到AR应用程序,带有Unity可寻址、Vuforia和Firebase_Android_Ios_Firebase_Unity3d_Vuforia - Fatal编程技术网

Android DLC系统到AR应用程序,带有Unity可寻址、Vuforia和Firebase

Android DLC系统到AR应用程序,带有Unity可寻址、Vuforia和Firebase,android,ios,firebase,unity3d,vuforia,Android,Ios,Firebase,Unity3d,Vuforia,我进入AR领域大约3个月了,我对在Unity中使用Vuforia构建AR应用程序有点熟悉。我想在我的AR应用程序中添加一个DLC系统,以便我可以构建和发布一次,并在构建后更新内容。我将在未来更新应用程序的新内容,因为这是一个带有AR函数的系列丛书,而且它们的文件大小将非常大,包含所有内容 我的工作流程如下: 1) 我有一些预设,通过ImageTarget=>AR内容来显示(3D模型、动画、图形和音频),我将它们选为可寻址并标记为“ARPages” 2) 我还将Vuforia数据库(图像、.xml

我进入AR领域大约3个月了,我对在Unity中使用Vuforia构建AR应用程序有点熟悉。我想在我的AR应用程序中添加一个DLC系统,以便我可以构建和发布一次,并在构建后更新内容。我将在未来更新应用程序的新内容,因为这是一个带有AR函数的系列丛书,而且它们的文件大小将非常大,包含所有内容

我的工作流程如下: 1) 我有一些预设,通过ImageTarget=>AR内容来显示(3D模型、动画、图形和音频),我将它们选为可寻址并标记为“ARPages” 2) 我还将Vuforia数据库(图像、.xml和.dat)设置为可寻址。我希望能够在构建后更新并添加到数据库中,然后将其与我设置为可寻址的新预置同步。 3) 我构建了轻量级的AR应用程序,没有将AR内容作为预置,但我的AR场景中有一个空的游戏对象(ARCamera=>GameObject),带有一个调用标记为“ARPages”的AssetLabelReference的脚本

5) 当我单击并打开AR场景时,我使用脚本加载并初始化Vuforia和数据库,但当我将手机照射到图像目标上时,什么也没有发生

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;

public class MultiRecoScript : MonoBehaviour, ITrackableEventHandler
{
    public AudioClip musicFx;
    public Animator[] myAnimator;

    private TrackableBehaviour mTrackableBehaviour;

    void Start()
    {
        //Fetch the Animator from your GameObject
        myAnimator = GetComponentsInChildren<Animator>();

        mTrackableBehaviour = GetComponent<TrackableBehaviour>();
        if (mTrackableBehaviour)
        {
            mTrackableBehaviour.RegisterTrackableEventHandler(this);
        }
    }

    public void OnTrackableStateChanged(
                                    TrackableBehaviour.Status previousStatus,
                                    TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            //lancio la musica
            Debug.Log("sound");
            AudioManagerScript.current.PlaySound(musicFx);

            foreach (Animator animator in myAnimator)
            {
                animator.speed = 1f;
                animator.gameObject.SetActive(true);

            }

        }
        else
        {
            // stoppo la musica
            AudioManagerScript.current.StopSound();
            //  Debug.Log("stoppo");

            foreach (Animator animator in myAnimator)
            {
                animator.gameObject.SetActive(false);

            }
        }
    }


}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用Vuforia;
公共类MultiRecoScript:MonoBehavior,ITrackableEventHandler
{
公共音频剪辑音乐;
公共动画师[]我的动画师;
私人可追踪行为;
void Start()
{
//从您的游戏对象中获取动画师
myAnimator=GetComponentsInChildren();
mtrackablebhavior=GetComponent();
if(MTrackableBehavior)
{
mtrackablebhavior.RegisterTrackableEventHandler(此);
}
}
公共无效OnTrackableStateChanged(
可跟踪行为。状态优先状态,
可跟踪的行为。状态(状态)
{
if(newStatus==trackablebehavior.Status.DETECTED||
newStatus==trackablebehavior.Status.TRACKED||
newStatus==trackablebehavior.Status.EXTENDED\u TRACKED)
{
//兰西奥音乐酒店
Debug.Log(“声音”);
AudioManagerScript.current.PlaySound(musicFx);
foreach(myAnimator中的Animator Animator)
{
animator.speed=1f;
animator.gameObject.SetActive(true);
}
}
其他的
{
//音乐之旅
AudioManagerScript.current.StopSound();
//Debug.Log(“stoppo”);
foreach(myAnimator中的Animator Animator)
{
animator.gameObject.SetActive(false);
}
}
}
}
我被卡住了。可能需要帮助和反馈。我希望能够使用unity中的addressables系统将新内容加载到firebase,并让应用程序下载新内容并实现新内容,而无需每次更新内容时都重建应用程序

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading.Tasks;
using UnityEngine.AddressableAssets;
using Vuforia;

public class LoadAssetsFromRemote : MonoBehaviour
{

    [SerializeField] private AssetLabelReference _label;

    // Start is called before the first frame update
   private void Start()
    {
        Get(_label);
    }

private async Task Get(AssetLabelReference label)
{
 var locations = await Addressables.LoadResourceLocationsAsync(label).Task;
 foreach (var location in locations)
 {
await Addressables.InstantiateAsync(location).Task;
 }
}

    // Update is called once per frame
    void Update()
    {

    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;

public class MultiRecoScript : MonoBehaviour, ITrackableEventHandler
{
    public AudioClip musicFx;
    public Animator[] myAnimator;

    private TrackableBehaviour mTrackableBehaviour;

    void Start()
    {
        //Fetch the Animator from your GameObject
        myAnimator = GetComponentsInChildren<Animator>();

        mTrackableBehaviour = GetComponent<TrackableBehaviour>();
        if (mTrackableBehaviour)
        {
            mTrackableBehaviour.RegisterTrackableEventHandler(this);
        }
    }

    public void OnTrackableStateChanged(
                                    TrackableBehaviour.Status previousStatus,
                                    TrackableBehaviour.Status newStatus)
    {
        if (newStatus == TrackableBehaviour.Status.DETECTED ||
            newStatus == TrackableBehaviour.Status.TRACKED ||
            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
        {
            //lancio la musica
            Debug.Log("sound");
            AudioManagerScript.current.PlaySound(musicFx);

            foreach (Animator animator in myAnimator)
            {
                animator.speed = 1f;
                animator.gameObject.SetActive(true);

            }

        }
        else
        {
            // stoppo la musica
            AudioManagerScript.current.StopSound();
            //  Debug.Log("stoppo");

            foreach (Animator animator in myAnimator)
            {
                animator.gameObject.SetActive(false);

            }
        }
    }


}