[DB-AL] 'Halo' is inaccessible due to its protection level

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Maki-Sama
Messages : 36
Inscription : 12 Mars 2018 21:00

[DB-AL] 'Halo' is inaccessible due to its protection level

Message par Maki-Sama » 06 Juin 2018 23:43

Salut à tous,

En bref, tout et dans le titre. :pascontent2:
Je veux seulement pouvoir modifier la couleur ou la taille d'un halo déjà présent sur mon objet.

Seulement, il m'affiche ce message d'erreur lorsque j'écris dans le script :

gameObject.GetComponent("Halo");

Merci par avance de vos réponses. :cote:

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: [DB-AL] 'Halo' is inaccessible due to its protection level

Message par simonj » 07 Juin 2018 07:31

Hello,

C'est un composant natif "Halo" ou bien une classe que tu as fait par toi-même ? Quel est le niveau de protection de ta classe "Halo" et de la classe qui contient cette ligne ?

L'erreur dit juste que tu ne peux pas accéder à la classe Halo car elle est protégé par sa visibilité. Il y a 3 "visibilité" :
- Public
- Internal
- Private (Si non-spécifié, c'est private)

En fonction du niveau de visibilité de tes deux classes, celle où tu viens de mettre la ligne qui fait l'erreur et la classe "Halo", il est possible que ça crée une erreur car l'un des deux classe n'est pas visible pour l'autre.

Avatar de l’utilisateur
Maki-Sama
Messages : 36
Inscription : 12 Mars 2018 21:00

Re: [DB-AL] 'Halo' is inaccessible due to its protection level

Message par Maki-Sama » 07 Juin 2018 13:01

Salut Simonj et merci pour ta réponse,

Pour ce qui concerne le 'Halo', je l'ai simplement ajouté en faisant "add component" sur Unity.

Est ce que en l'ajoutant de cette manière on ne peut pas le modifier ?

Si c'est le cas comment puis-je procéder ?

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

Re: [DB-AL] 'Halo' is inaccessible due to its protection level

Message par boubouk50 » 07 Juin 2018 13:30

Tu as la réponse ici en anglais: https://answers.unity.com/questions/931 ... -halo.html
De ce que j'ai compris, Halo dérive de Behaviour (et pas MonoBehaviour) donc de Component et est un type et pas une classe.
D'après la documentation officielle, les différentes utilisations de GetComponent () ne renvoient pas la même chose, et la fonction GetComponent (string) nécessite un cast, elle renvoie un Component, alors que l'autre renvoie un type. De plus, il est préférable d'utiliser le GetComponent <type> () pour des raisons de performances.
Donc:

Code : Tout sélectionner

gameObject.GetComponent<Halo>();
ou

Code : Tout sélectionner

(Behaviour)gameObject.GetComponent ("Halo");
La première étant plus performante.
"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

Avatar de l’utilisateur
Maki-Sama
Messages : 36
Inscription : 12 Mars 2018 21:00

Re: [DB-AL] 'Halo' is inaccessible due to its protection level

Message par Maki-Sama » 07 Juin 2018 17:57

Re, j'ai testé les différents codes mais j'ai soit le même résultat, soit cette erreur :

'Component' does not contain a definition for 'Size' and no extension method 'Size' accepting a first argument of type 'Component' could be found (are you missing a using directive or an assembly reference?)

Voici mon code, je pense que cela aidera à trouver le problème :

Code : Tout sélectionner

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

public class Holo2 : MonoBehaviour {

    Component Halo;
    public float HaloSize;

	void Start () {

        Halo = (Behaviour)gameObject.GetComponent("Halo");
        HaloSize = Halo.Size;

    }

    void Update()
    {
        if (Input.GetKeyDown("c"))
        {
            HaloSize = 1;
        }

        if (Input.GetKeyDown("d"))
        {
            HaloSize = 0;
        }
    }
}

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

Re: [DB-AL] 'Halo' is inaccessible due to its protection level

Message par Max » 07 Juin 2018 18:19

Bonsoir,

tu ne pourras pas accéder aux propriétés de 'Halo' (comme pour la couleur que tu souhaitais changer, si j'ai bien compris)
Halo est une classe dérivé de Behaviour (comme souligné plus haut) et est internal.
Tes seuls changement ne peuvent donc se faire que par le biais de l'inspector. Tu peux aussi changer le shader (dans les Graphic setting). Pour des actions par script en runtime, pas sûr que cela t'aide beaucoup.
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

Avatar de l’utilisateur
Maki-Sama
Messages : 36
Inscription : 12 Mars 2018 21:00

Re: [DB-AL] 'Halo' is inaccessible due to its protection level

Message par Maki-Sama » 07 Juin 2018 18:30

OK, c'est ce que je pensais aussi. :-|
C'est un peu dommage, car j'en aurai bien eu besoin pour faire une sorte d'hologramme avec un halo autour. :/

Vous n'auriez pas une autre idée pour faire l'aspect de surbrillance ?
(Ou bien un site ou une vidéo à me conseiller)

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

Re: [DB-AL] 'Halo' is inaccessible due to its protection level

Message par Max » 07 Juin 2018 18:39

Maki-Sama a écrit :
07 Juin 2018 18:30
C'est un peu dommage, car j'en aurai bien eu besoin pour faire une sorte d'hologramme avec un halo autour. :/
je t'avoue que ne j'ai jamais trop compris ce choix technique de la par d'UT concernant ce speudo composant. Pourtant il doit bien y avoir une raison :mrgreen:
Maki-Sama a écrit :
07 Juin 2018 18:30
Vous n'auriez pas une autre idée pour faire l'aspect de surbrillance ? (Ou bien un site ou une vidéo à me conseiller)
Tu as un exemple pour mieux comprendre ? Tu fais allusion à quelque chose qui s’apparenterait au Glow ?
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

Avatar de l’utilisateur
Maki-Sama
Messages : 36
Inscription : 12 Mars 2018 21:00

Re: [DB-AL] 'Halo' is inaccessible due to its protection level

Message par Maki-Sama » 07 Juin 2018 19:46

À vrai dire j'aimerais trouver un moyen de faire une sorte d'hologramme qui clignote (d'où le changement de taille ou de couleur du halo :cote: ) mais vu que l'on ne peut le modifier avec un script, je souhaiterais quelque de similaire à un halo.

(comme une sorte de brouillard lumineux autour de lui, pas comme le shader glow qui ne fait que rendre la texture plus lumineuse)

Répondre

Revenir vers « (C#) CSharp »