Unity: не может ссылаться на пространство имен (или даже метод в другом скрипте) - PullRequest
1 голос
/ 22 октября 2019

Я создаю проект AR в Unity с Vuforia и использую демо-версию AVPro Video для потоковой передачи через HLS. Все, что я хочу сделать, это вызвать метод Pause () из сценария в пространстве имен AVPro (используя RenderHeads.Media.AVProVideo) из сценария Vuforia, если отслеживание потеряно, и Play (), когда отслеживание найдено снова. Однако я не могу заставить свой редактор распознавать другой класс в пространстве имен RenderHeads.Media.AVProVideo или даже в самом пространстве имен. Я думаю, что это связано со ссылками на сборки или уровнями папок (через https://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html), но я не могу понять, как это правильно решить? Вот изображение ссылок на сборки в моем проекте, показывающее, что VuforiaScripts и VuforiaEditorScripts существуют вне уровня сценариев, содержащихся в сборке редактора? ... если это вещь?

Я получаю следующие ошибки:

Активы / Vuforia / Scripts / DefaultTrackableEventHandler.cs (14,7): ошибка CS0246:Не удалось найти тип или имя пространства имен Renderheads (отсутствует директива using или ссылка на сборку?)

Я попытался удалить и повторно импортировать демонстрационную программу AVPro Video, обновив Visual Studio, запустивполностью закончил и перестроил мой проект, и ничего.

Вот код для скрипта Vuforia, который я изменил (нерелевантные части не опубликованы, только мои добавления):

using UnityEngine;
using Vuforia;
using RenderHeads.Media.AVProVideo;


public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler

{   protected MediaPlayer mediaPlayer;
    public GameObject ResponsiveMediaPlayer; 


    public virtual void Start()
    { mediaPlayer = ResponsiveMediaPlayer.GetComponent<MediaPlayer>(); }


    public virtual void OnTrackingFound()
    { mediaPlayer.Play(); } 


    public virtual void OnTrackingLost()
    { mediaPlayer.Pause();   } } 

Любая помощь будет оценена, спасибо!

РЕДАКТИРОВАТЬ : Решено! Это связано с порядком компиляции скриптов! Мне пришлось собрать все скрипты AVPro в одну папку, затем я сделал определение сборки, чтобы скрипты компилировались одновременно со скриптами Vuforia, так как они компилировались раньше всего. Чтобы сделать ссылку на сборку, щелкните правой кнопкой мыши папку скриптов, на которую вы хотите сослаться, и создайте> Определение сборки. Убедитесь, что Auto-Referenced и Use GUID отмечены. Определение сборки будет автоматически ссылаться на все сценарии в той же папке, в которой оно находится. Затем, чтобы иметь возможность ссылаться на него из сценариев Vuforia, я нашел файл VuforiaScripts.asmdef (определение сборки VuforiaScripts) и в инспекторе в разделе«Ссылки на определение сборки» Я добавил только что сделанный. Надеюсь, это поможет!

...