[RESOLU]Agir sur le son .tbe sur le player vidéo

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Alkyssprod
Messages : 40
Inscription : 11 Avr 2019 10:05

[RESOLU]Agir sur le son .tbe sur le player vidéo

Message par Alkyssprod » 19 Fév 2020 18:51

Bonjour,

J'ai donc une nouvelle problématique.

J'ai donc un player qui contrôle la vidéo liée au PlayerVidéo.
Mais j'ai un son .tbe qui joue avec le plug-in Facebook.

le son est dans un GameObject nommé SpatDecoderFile.

Comment lier mes boutons pour que non seulement ça control la vidéo mais aussi le son svp ?

Mon Script :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;

public class VideoManager : MonoBehaviour

{
 
 private VideoPlayer videoPlayer;

        void Awake()

    {
        videoPlayer = GetComponent<VideoPlayer> ();

    }

 private void Start()

    {
        

    }
    
public void Play()
    {
        videoPlayer.Play();
    }

     public void Pause()
    {
        videoPlayer.Pause();
    }
    

    public void Stop()
    {
        videoPlayer.Stop();
    }
}
Pièces jointes
Capture d’écran 2020-02-19 à 17.50.10.png
Capture d’écran 2020-02-19 à 17.50.10.png (288.89 Kio) Consulté 4496 fois
Dernière édition par Alkyssprod le 20 Fév 2020 18:32, édité 1 fois.

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Agir sur le son .tbe sur le player vidéo

Message par Max » 19 Fév 2020 20:52

Bonsoir,

Il te faut référencer le script que tu cherches à atteindre à partir de ton script VideoManager.cs, pour pouvoir utiliser ces fonctionnalités (comme le déclenchement d'un son), que tu pourras alors insérer dans la méthode Play() par exemple.
Pour en savoir plus, et accéder aux variables et/ou méthodes d'un script placé sur un autre GameObject,
voici un exemple de tuto qui devrait t'éclairer: https://www.youtube.com/watch?v=mD1nZO8SSvs
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Alkyssprod
Messages : 40
Inscription : 11 Avr 2019 10:05

Re: Agir sur le son .tbe sur le player vidéo

Message par Alkyssprod » 20 Fév 2020 13:38

Merci,

J'ai donc essayé d'écrire mon véritable premier script à ma sauce avec l'aide de cette vidéo.

J'ai donc écris ceci :

La logique j'ai essayé d'appliquer est d'aller voir si ma vidéo est en mode pause ou play dans mon GameObject "Film" au travers du script VideoManager.

Si elle est en pause je demande à l'AudioListener de se mettre en pause, Si c'est pas le cas je demande qu'il continuer de jouer (play).

Mais j'ai une erreur :/ : Assets/Scripts/ManagerSound.cs(41,1): error CS1022: Type or namespace definition, or end-of-file expected

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using TBE;
using System.Runtime.InteropServices;
using UnityEngine.UI;
using UnityEngine.AudioListener;


public class AudioListener : MonoBehaviour

{
   

    void Start () {

        Debug.Log(GameObject.Find("Film").GetComponent<VideoManager>().VideoManager);
            
        }
    }

    void Update (){

    }

    public void SoundControl(){

    if (VideoManager.Pause = True){
        AudioListener.Pause();
    }

    else

    {
        AudioListener.Play;
    }
         

    }
}

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Agir sur le son .tbe sur le player vidéo

Message par Max » 20 Fév 2020 14:29

Hello,

plusieurs choses de base.
Première chose, tu as visiblement une accolade de trop dans ton script (dans le fonction Start() ), Le message d'erreur devrait te mettre sur la voie.
En suite, évite de nommer tes classes avec le nom d'une classe de l'API Unity, dans le cas présent AudioListener. Cela ne va t'attirer que des soucis.
Enfin, pourquoi ce using "UnityEngine.AudioListener;" ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Alkyssprod
Messages : 40
Inscription : 11 Avr 2019 10:05

Re: Agir sur le son .tbe sur le player vidéo

Message par Alkyssprod » 20 Fév 2020 15:03

Merci Ma pour tes éclaircissements.

J'ai regardé où j'avais une accolade de trop mais j'ai mal regardé ^^°

J'ai mis ce Using car je pensais interagir avec l'ApI Audiolistener (?)

Bon je viens de regarder et j'ai que des erreurs...

A la base j'aimerais mettre en pause l'audiolistener qui permettrait d'agir sur tous l'environnement sonore de ma scène.

Je pensais avec ce script cibler l'action play pause de mon script VidéoManager sur mon film.

mais ça ne marche pas :/
Pièces jointes
Capture d’écran 2020-02-20 à 14.04.20.png
Capture d’écran 2020-02-20 à 14.04.20.png (55.32 Kio) Consulté 4343 fois

Avatar de l’utilisateur
Aelhan
Messages : 124
Inscription : 11 Déc 2019 23:00

Re: Agir sur le son .tbe sur le player vidéo

Message par Aelhan » 20 Fév 2020 15:29

Code : Tout sélectionner

if (VideoManager.Pause = True)
Aïe ! Plusieurs erreurs là dedans.
Déjà tu appelles la method VideoManager.Pause et il te faut donc y mettre () . Mais ça ne marchera toujours pas, d'une part parce true ne prend pas de majuscule mais surtout parce que ce n'est pas un booléen... tu devrais en déclarer un, par exemple pauseBool que tu passes sur true quand tu es sur pause et sur false dans les method Play() et Stop() et Start() par exemple.
Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

Alkyssprod
Messages : 40
Inscription : 11 Avr 2019 10:05

Re: Agir sur le son .tbe sur le player vidéo

Message par Alkyssprod » 20 Fév 2020 16:14

J'ai tout réécris, mais ça ne marche pas :( :( :( :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;



public class AudioListener : MonoBehaviour

{
   

    void Start () {

        Debug.Log(GameObject.Find("Film").GetComponent<VideoPlayer>().VideoManager);
            
        }
    
    void pause(){

        if (VideoPlayer.Pause = true) {
            AudioListener.Pause();
        }
    }

    void Play(){

        if (VideoPlayer.Play = true){
            AudioListener.Play();
        }
    }
   

    }
Pièces jointes
Capture d’écran 2020-02-20 à 15.15.52.png
Capture d’écran 2020-02-20 à 15.15.52.png (51.73 Kio) Consulté 4308 fois

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6206
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Agir sur le son .tbe sur le player vidéo

Message par boubouk50 » 20 Fév 2020 16:24

C'est n'importe quoi. Tu n'as rien réécrit, t'as juste séparé en 2 fonctions.
Tu n'as pas du tout tenu compte des conseils de Aelhan.
VideoPlayer est une classe, Pause est une fonction, true est un type et = une affectation.
En une ligne de 4 éléments, il y a 4 erreurs/non sens.

Donc une comparaison c'est == et pas =.
true est un booléen, tu ne peux pas le comparer à une fonction. Il faut le comparer à un autre booléen. (souviens toi, en primaire on peut pas additionner des pommes et des oranges -> un programme informatique est aussi con qu'un gamin de 5-6 ans). Magie, Unity a pensé à tout: isPlaying
Videoplayer.Pause () est une erreur car VideoPlayer est une classe, il faut que ce soit une référence. La voici: VideoPlayer maRef = GameObject.Find("Film").GetComponent<VideoPlayer>();
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Alkyssprod
Messages : 40
Inscription : 11 Avr 2019 10:05

Re: Agir sur le son .tbe sur le player vidéo

Message par Alkyssprod » 20 Fév 2020 18:32

J'ai finalement réussi en faisant un deuxième "OnClic" sur mes boutons.
J'ai glissé le gameObject SpatDecodeur sur le deuxième OnClic,
J'ai pu accéder aux fonctions Play et Pause.

Ca a fini par marcher sans ligne de code. :naah:

Répondre

Revenir vers « Scripting »