Changer une Texture par script

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
NostraDamon
Messages : 48
Inscription : 14 Fév 2010 22:21
Localisation : Pau - 64 000

Changer une Texture par script

Message par NostraDamon » 14 Fév 2010 22:31

Bonjour,

Comme dit dans le titre, je cherche à changer la texture d'un objet par le biais du code.
Ca a l'air de fonctionner avec:

Code : Tout sélectionner

renderer.material.SetTexture("_MainTex", tex1);
Le problème c'est que je ne parviens pas charger une image dans "tex1" (image qui est dans mon dossier "StandardAssets" et que je peux sélectionner manuellement, c'est un .jpg). J'ai essayé avec tex1.LoadImage, mais sans succès, je ne comprends pas comment utiliser ces "bytes"...
"tex1" est de type Texture2D.

Si quelqu'un a une solution simple (ou pas :P ) je suis preneur, là je bloque complètement...

Merci beaucoup :D

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Changer une Texture par script

Message par giyomuSan » 15 Fév 2010 08:34

qu'est ce que tu cherceh a faire exactement ?

creer une texture nouvelle en copiant les pixels d une image dans ta nouvelle texture creer via code ou simplement alterner plusieurs image sur ton objet.

Dans le dernier cas tu peux stocker tes textures dans un tableau et aller les chercher via leur index.

pour la premiere solution c un peu plus compliquer et hyper gourmand en resources cpu , dc a faire de preference dans une fonction Awake() ou Start() et plus y revenir apres, mais si c'est ca que tu veux j'ai un jeu dans lequel j utilise ce procede poru creer un GUI.Texture maison pour mon menu je peux te poster le bout de code..

Avatar de l’utilisateur
Ambrosios
Messages : 149
Inscription : 07 Jan 2010 10:13

Re: Changer une Texture par script

Message par Ambrosios » 15 Fév 2010 11:45

Tiens, ça m'intéresse aussi !

Mais un Resources.Load() ne suffit pas si on veut charger une texture ?
A3G - WarGround
DevBlog

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Changer une Texture par script

Message par giyomuSan » 15 Fév 2010 13:24

bah un resources load oui , mais dans ce cas tu va appliquer la texture que tu charge sur ton object directement

dans ce cas tu fais un truc du style >>

Code : Tout sélectionner

tonObjetATexturer.renderer.material.mainTexture = Resources.Load("taTexture", Texture2D);
ne pas oublier de creer son dossier Resources dans le projet unity et d'y placer ta texture evidement..

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: Changer une Texture par script

Message par ZJP » 15 Fév 2010 15:56

Merci, je cherchais la méthode (sans vraiment chercher...Je suis fainéant ces jours-ci).

JP

Avatar de l’utilisateur
NostraDamon
Messages : 48
Inscription : 14 Fév 2010 22:21
Localisation : Pau - 64 000

Re: Changer une Texture par script

Message par NostraDamon » 15 Fév 2010 20:31

bah un resources load oui , mais dans ce cas tu va appliquer la texture que tu charge sur ton object directement

dans ce cas tu fais un truc du style >>

Code: Tout sélectionner
tonObjetATexturer.renderer.material.mainTexture = Resources.Load("taTexture", Texture2D);



ne pas oublier de creer son dossier Resources dans le projet unity et d'y placer ta texture evidement..
Merci pour cette réponse! Ca marche nickel! :D
Cette communauté a vraiment l'air accueillante (et active en plus) ! Je pense que je vais passer régulièrement sur ce forum ^^

Merci encore!

Avatar de l’utilisateur
bboss23
Messages : 6
Inscription : 10 Juin 2010 14:02

Re: Changer une Texture par script

Message par bboss23 » 13 Juin 2010 20:20

salut,
je vais up ce post et oui, il m'a beaucoup servi mais en fait ça répond pas exactement à ce que je veux faire :
mon GameObject contient 4 materials, et je veux avec script changer la texture2D de l'un des materiaux.
Dois je utiliser un GameObject.GetComponent pour ça?
arf je suis un peu perdu alors help please :?

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Changer une Texture par script

Message par giyomuSan » 14 Juin 2010 01:43

bah il faut que tu choppe la reference du material que tu veux changer.

style , en admettant que ton script sois evidemmment sur le game objet qui comprends tout tes materiaux

Code : Tout sélectionner

//Version js
var laTexture : Texture;

function Start()
{

     var mesMats = renderer.materials      //le "s" a materials est important ^^
     var indexMats = 0;
     mesMats[indexMats].mainTexture = laTexture;
     renderer.materials = mesMats;

}
ensuite tu change l index avec celui qui correspond au mat sur lequel tu veux appliquer ta texture.

Avatar de l’utilisateur
bboss23
Messages : 6
Inscription : 10 Juin 2010 14:02

Re: Changer une Texture par script

Message par bboss23 » 14 Juin 2010 11:55

Un énorme merci c'est exactement ce que je voulais :D

Répondre

Revenir vers « Scripting »