0

キー オブジェクトを使用してユーザーにビデオ テクスチャをロードする Unity Pro 用のスクリプトを作成しようとしています。次のコードを使用すると、「NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません」などのさまざまなエラーが発生します。

#pragma strict
static var isPlay : boolean = false;

function OnTriggerEnter (other : Collider) {
    if(other.CompareTag("key")) {
        print("Key!\n");
        isPlay = true;
    }
}

var movTexture : MovieTexture;

function Update() {
    if(isPlay) {
        movTexture = Resources.Load("VideoScraping/VidsList/20130324003252.mp4") as MovieTexture;
        renderer.material.mainTexture = movTexture;
        movTexture.Play();
    }
}

リソースをロードするために私がしなければならないキャストの別の形式はありますか? ムービーの読み込み方法は異なりますか? ここに私が見逃している別の要素はありますか?

4

2 に答える 2

1

したがって、最初に考えられる修正として、リソース パスは /Assets/Resources からの相対パスである必要があります。Resources.Load()から:

見つかった場合はパスにあるアセットを返します。そうでない場合は null を返します。パスは、プロジェクトの Assets フォルダー内の Resources フォルダーに対する相対パスであり、拡張子は省略する必要があります。

次は、ムービー テクスチャを複数回再生する問題です。あなたの質問の目的のために、ブール値フラグの例に固執します(isPlay -> triggerPlay の変更):

if(triggerPlay) {
    movTexture = Resources.Load("VideoScraping/VidsList/20130324003252.mp4") as  MovieTexture;
    renderer.material.mainTexture = movTexture;
    movTexture.Play();
    triggerPlay = false; //Just swap the flag here.
}

ムービー テクスチャが再生中かどうかに関係なく、OnTriggerEnter が 'triggerPlay' を true に設定するため、これは理想的ではありません。その点で、ムービー再生コードを OnTriggerEnter に移動して、フラグを取り除くことができます。または、次のようなこともできます。

var movTexture : MovieTexture;
function OnTriggerEnter(other:Collider){
    if(other.CompareTag("key")&&!IsPlaying()){
        movTexture = Resources.Load("VideoScraping/VidsList/20130324003252.mp4") as  MovieTexture;
        renderer.material.mainTexture = movTexture;
        movTexture.Play();  
    }
}
function IsPlaying() :boolean {
    if(movTexture==null) return false;
    if(movTexture.isPlaying)return true;
    return false;
}

フラグを使用する代わりに、コルーチンを使用してムービーを再生することもできますが、それは元の質問の範囲を少し超えています。

于 2013-03-25T02:05:57.803 に答える
0

この質問に答えるのは非常に遅いですが、ファイル拡張子を Resoruces.Load() 関数に含めるべきではないと思います。

 movTexture = Resources.Load("VideoScraping/VidsList/20130324003252") as  MovieTexture;
于 2013-10-29T14:22:05.273 に答える