Comment accéder au script d'un gameObject?

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
quentinlac
Messages : 3
Inscription : 10 Juin 2019 10:43

Comment accéder au script d'un gameObject?

Message par quentinlac » 28 Juin 2019 10:39

Bonjour,

Je débutes sur Unity, et j'essaye de créer un Escape Game. Actuellement j'ai créé ma scène avec divers objets ainsi que le personnage que je peux contrôler. J'ai créer un raycast afin d'intéragir avec les objets de la scène. Lorsqu'un gameobject avec un tag "editable" est visé, alors je veux éxecuter la méthode Action() se trouvant dans le script du gameObject en question.

Chaque objet de la scène étant éditable c'est à dire que l'on peut intéragir avec possède un script avec des méthodes différentes. Mais dans chaque Script une méthode se nomme Action() et qui doit s'éxecuter à chaque fois que l'utilisateur vise l'objet et appuie sur E.

Les scripts ont des noms différents, ducoup dans mon script MvCamera(gestion de la caméra + création du raycast) je n'arrive pas à faire appelle) à la méthode Action().

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CameraMv : MonoBehaviour
{

    public Camera camera;

    public float sensi = 1;

    Vector3 rotation = new Vector3(0,0,0);

    public GameObject perso;
	
    public Text legendTxt;

    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
	//float xM = Input.GetAxis("Mouse X");
	float yM = Input.GetAxis("Mouse Y");

	rotation.x -= yM * sensi;
	rotation.y = perso.transform.eulerAngles.y;
	
	transform.eulerAngles = rotation;


	RaycastHit hit;
      Ray ray = camera.ScreenPointToRay(Input.mousePosition);

	//Vector3 forward = transform.TransformDirection(Vector3.forward);
      //Debug.DrawRay(transform.position, forward, Color.green);

      if (Physics.Raycast(ray, out hit,4f)) {
           Transform objectHit = hit.transform;

	     //GameObject objetTouche = hit.transform.gameObject;
	
	     

	     if(hit.transform.tag == "Editable"){

		  legendTxt.text = "Press E !";

	     	  //hit.Action();	
		  Debug.Log(objectHit.name);
		  if(Input.GetKeyDown(KeyCode.E)){
			objectHit.gameObject.Action();
		  }

	     }
	     else{
			legendTxt.text = " ";

		}

		
            

      }
        
    }


}
J'ai essayé en faisant objectHit.gameObject.Action(); mais ça ne fonctionne pas (erreur).

Merci d'avance pour vos réponses.

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

Re: Comment accéder au script d'un gameObject?

Message par Max » 28 Juin 2019 11:36

Bonjour,

Il te manque un certains nombre de concepts de base, que se soit en C# ou avec Unity.
Déjà en ce qui concerne Unity. Un script, lorsqu'il est attaché à un GameObject est considéré comme un Component.
Donc si tu souhaites y accéder par le biais du GameObject, tu dois passer par la méthode GetComponent().
Cf la doc, et tu peux regarder le tuto dédié qui te permettra de bien comprendre l'approche.

Niveau C# maintenant. Il faut que tu travailles les bases de la POO, en particulier le concept d'héritage. Par exemple essais de suivre le cours d'OpenClasseRoom.
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

Répondre

Revenir vers « Scripting »