Dans unity , j'ai un cube. j'ai appliquer 2 script en composant sur ce cube.
Un 1er script RandomPerCent renvoye une valeur true/false en fonction d'un certain pourcentage indiquer en argument.
un 2nd script effectue une action qui renvoi en debug.log true ou false quand j'appuie sur un bouton.
Je souhaite que la console me renvoi t/f avec un poucentage de chance que ce soit true indiqué en surcharge de RandomPerCent
il s'agit d'importer la méthode du script 1 dans le script 2 (c'est précisément ça ce que j'essaye de faire).
... et ça ne marche pas.
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomPerCent : MonoBehaviour
{
public RandomPerCent(float PerCent) { } //constructeur
public float PerCent; //en entrée: indique le pourcentage de chance qu'un evenement se produise
public bool Action; // en sortie , le dite action
private float Calcul(float nbr)
{
float factor;
factor = nbr / 100;
return factor;
}
public void Start()
{
if (PerCent < 0)
PerCent = 0;
if (PerCent > 100)
PerCent = 100;
float a;
a = Calcul(PerCent);
float rdm;
rdm = Random.value; // donne une valeur aleatoire entre 0 et 1
if (rdm <= a)
{
Action = true;
}
else
{
Action = false;
}
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test: MonoBehaviour {
public bool Action;
// Use this for initialization)
void Start () {
}
public void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
RandomPerCent Chance = new RandomPerCent(50);
Action = Chance;
Debug.Log(Action);
}
}
}
J'ai donc essayer de retirer le MonoBehaviour a la class RandomPerCent: mais du coup Visual studio me dit: "impossible de convertir RandomPerCent en Bool.You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
RandomPerCent:.ctor(Single) (at Assets/RandomPerCent.cs:10)
Test:Update() (at Assets/Test.cs:25)
J'ai donc essayer de retirer le MonoBehaviour a la class Test: mais du coup Unity me dit: "The class named 'Test' is not derived from MonoBehaviour or ScriptableObject!"
En continuant mes recherches , j'ai lu aussi que je pouvais supprimer l'injonction de New par GameObject.AddComponent mais la doc du unity me dit que c'est obsolète et en plus j'ai pas compris comment m'en servir.
La solution ce trouve peut être dans l'utilisation des Get et des Set. mais je n'ai pas encore tout compris de leur utilisation ( j'ai commencer a apprendre la semaine dernière)
Je suis perdu , Pouvez vous m'aider a comprendre ce que j'ai oublié .