UnityでOpenCv for unityを使ってビデオファイル再生するアプリを作っています。
サンプルではStreamingAssetsにあるaviファイルを参照して再生しており
それでは問題ないのですがやりたいことはApplication.persistentDataPathにある
ファイルを参照して再生したいと思っています。
下記は問題なし↓
public class VideoCaptureController : MonoBehaviour { protected static readonly string VIDEO_FILENAME = "Q000.avi"; //[StreamingAssets/File]; #if UNITY_WEBGL && !UNITY_EDITOR IEnumerator getFilePath_Coroutine; #endif // Use this for initialization void Start() { fpsMonitor = GetComponent<FpsMonitor>(); capture = new VideoCapture(); #if UNITY_WEBGL && !UNITY_EDITOR getFilePath_Coroutine = Utils.getFilePathAsync(VIDEO_FILENAME, (result) => { getFilePath_Coroutine = null; capture.open(result); Initialize(); }); StartCoroutine(getFilePath_Coroutine); #else capture.open(Utils.getFilePath(VIDEO_FILENAME)); Initialize(); #endif }
質問はStreamingAssetsへの参照をApplication.persistentDataPathに変更したいのですが
protected static readonly string VIDEO_FILENAME = "Q000.avi";を
protected static readonly string VIDEO_FILENAME = Application.persistentDataPath + "/Q000.avi";に変更すると下記エラーが出ます。
(StreamingAssetsとApplication.persistentDataPathの両方にQ000.aviファイルは入っています)
UnityException: get_persistentDataPath is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'VideoCaptureController' on game object 'Quad'. See "Script Serialization" page in the Unity Manual for further details. OpenCVForUnityExample.VideoCaptureController..cctor () (at Assets/Scripts/VideoCaptureController.cs:70) Rethrow as TypeInitializationException: The type initializer for 'OpenCVForUnityExample.VideoCaptureController' threw an exception.
どうすれば良いのかヒントでも良いので分かる方お教えください。
環境)
PC: Windows10
Unity2019.4.0f1
言語:C#
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/31 06:28