Hi everyone,
I have a question related to my AR app.
I’m making a simple AR app that detects a mark and places a video on top.
I’m using ARCore to build so I can install apk on my Galaxy S23 phone.
I have this script under the XR Origin object that allows me to place multiple videos with my app.
But when I turn on this app, it shows a black screen at first, but it works perfectly after minimizing and reopening. This still happens after I give all the access to my camera and fully turn it off, and turn it on again. Does anyone know how to make this work without going back to main screen?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class ImageTracker : MonoBehaviour
{
private ARTrackedImageManager trackedImages;
public GameObject[] ArPrefabs; //Quarry the game object and claim it as 'ArPrefabs'
List<GameObject> ARObjects = new List<GameObject>();
void Awake() //called when the script object is initialised, regardless of whether or not the script is enabled
{
trackedImages = GetComponent<ARTrackedImageManager>();
}
void OnEnable()
{
trackedImages.trackedImagesChanged += OnTrackedImagesChanged;
}
void OnDisable()
{
trackedImages.trackedImagesChanged -= OnTrackedImagesChanged;
}
private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs) //Main event function.
{
//Create object based on image tracked
foreach (var trackedImage in eventArgs.added)
{
foreach (var arPrefab in ArPrefabs)
{
if (trackedImage.referenceImage.name == arPrefab.name)
{
var newPrefab = Instantiate(arPrefab, trackedImage.transform);
ARObjects.Add(newPrefab);
}
}
}
//Update tracking position
foreach (var trackedImage in eventArgs.updated)
{
foreach (var gameObject in ARObjects)
{
if (gameObject.name == trackedImage.name)
{
gameObject.SetActive(trackedImage.trackingState == TrackingState.Tracking);
}
}
}
}
}
