[DB-AL] Problème de chargement de textures.

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
kevauto
Messages : 18
Inscription : 22 Mars 2017 10:00

[DB-AL] Problème de chargement de textures.

Message par kevauto » 22 Mars 2017 10:10

Bonjour à tous,
Je viens ici pour savoir si quelqu'un peut m'aider à résoudre un problème que je rencontre depuis quelques jours sur Unity.
Je n'arrive pas à charger correctement une texture sous peine de faire planter le logiciel.
J'ai regardé la documentation d'Unity mais je n'arrive pas à résoudre le problème.
Si quelqu'un peut m'aider, je remercie d'avance.
Je joints le code ci-dessous.

Code : Tout sélectionner

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

public class chargeTexture:MonoBehaviour
{
    // ZONE DE DEBUT //
    public float scale = 1f;
        //Récupère les informations des composants
            public Renderer gameObjectToChange;
            void Update()
        {
        //Applique les modifications souhaitées aux composants
           gameObjectToChange.material = materialToChange;
            Texture2D tex = Resources.Load("mire") as Texture2D;
            gameObjectToChange.material.SetTexture("mire", tex);
            gameObjectToChange.material.SetTextureScale("mire", new Vector2(scale, scale));
    } 
    // ZONE DE FIN //
}
 ! Message de : boubouk50
Balises

Code : Tout sélectionner

 scrogneugenu![/mod]

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

Re: [DB-AL] Problème de chargement de textures.

Message par boubouk50 » 22 Mars 2017 10:18

Un Update () est appelé à chaque frame: donc tu charges une texture par frame soit 60 fois par secondes pour du 60 fps... Il ne faut le faire qu'une seule fois! Par un bouton ou une touche ou un événement par exemple.
Aussi, est-ce-que ton shader possède une variable appelée mire? Je ne pense pas... Il faut laisser _MainTex qui devait être présent au départ, cela représente le tag de la texture diffuse dans le SetTexture et SetTextureScale.
Pour finir, tu dois avoir des erreurs qui apparaissent dans la console, en rouge. Si c'est le cas, lis-les bien pour comprendre d'où vient le problème. Unity le gère bien normalement.
"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

kevauto
Messages : 18
Inscription : 22 Mars 2017 10:00

Re: [DB-AL] Problème de chargement de textures.

Message par kevauto » 22 Mars 2017 10:29

Merci pour l'explication du problème sur l'update.
J'ai laissé _MainTex dans le shader.
Unity informe qui n'arrive pas à accéder au dossier "/Assets/Resources/mire" : je déduis donc qui n'arrive pas à aller charger la texture au dossier. D'après ce que je comprends, il accède dans "/Program Files/Unity/Editor/Data/Resources".

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

Re: [DB-AL] Problème de chargement de textures.

Message par boubouk50 » 22 Mars 2017 10:37

Dans ton projet, il faut que tu aies une texture appelée mire(.jpg, .png, .tga) dans un dossier nommé Resources.
Le dossier Resources est obligatoire. Ensuite, tu fais ce que tu veux, mais il te faut préciser le chemin:
Resources.Load ("Mire/Images/mire") as Texture pour une texture nommée mire.jpg dans le dossier Assets/.../Resources/Mire/Images/.
Resources doit être dans ton projet, donc enfant de Assets.
"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

kevauto
Messages : 18
Inscription : 22 Mars 2017 10:00

Re: [DB-AL] Problème de chargement de textures.

Message par kevauto » 22 Mars 2017 10:41

Dans mon dossier Resources, une image mire.JPG y figure déjà.
Image

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

Re: [DB-AL] Problème de chargement de textures.

Message par boubouk50 » 22 Mars 2017 10:48

Essaie ce code:

Code : Tout sélectionner

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

public class chargeTexture:MonoBehaviour
{
	// ZONE DE DEBUT //
	public float scale = 1f;
        //Récupère les informations des composants
	public Renderer gameObjectToChange;
        
	void Update()
	{
		//Applique les modifications souhaitées aux composants
		gameObjectToChange.material = materialToChange;
		Texture tex = Resources.Load ("mire") as Texture;
		gameObjectToChange.material.mainTexture = tex;
		gameObjectToChange.material.SetTextureScale ("_MainTex", new Vector2 (scale, scale));
	} 
	// ZONE DE FIN //
}
EDIT: Tu es en 2D ou 3D? C'est pour un sprite ou un objet 3D?
"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

kevauto
Messages : 18
Inscription : 22 Mars 2017 10:00

Re: [DB-AL] Problème de chargement de textures.

Message par kevauto » 22 Mars 2017 11:00

C'est pour un terrain 3D généré automatiquement par un script.
Et je dois appliquer une texture à partir d'une image .JPG à ce terrain 3D généré.

kevauto
Messages : 18
Inscription : 22 Mars 2017 10:00

Re: [DB-AL] Problème de chargement de textures.

Message par kevauto » 22 Mars 2017 11:09

Avec l'application de ton code, j'ai pu ainsi résoudre le problème rencontré.
Merci de ton aide.
Maintenant je vais pouvoir effectuer un scale sur un seul carré du terrain.
Image

Répondre

Revenir vers « (C#) CSharp »