Menu

Les news. Toutes les dernières infos sur Unity

Unity 3D, Intégration de boutons interactifs par javascript : Tutoriel 4

Suite directe du tuto 3, voici comment créer à partir d’un template prédéfini d’Unity3D, des boutons d’interface interactifs. Dans le tuto qui suit, je vous explique comment faire disparaitre des palmiers en cliquant sur des boutons générés par code. Let’s go !

Il y a 20 commentaires. Commentez.

avatar

GuyTina —

Bonjour tout le Monde

Excellent…le code est parfait .merci

Sur un autre sujet:(et surtout sans faire de troll)
J’ai utilisé pendant quelque jours l’UDK 3 de Unreal…je n’ai que 10 fps avec un simple rectangle(cube),un départ de joueur et une lumière,pourtant j’ai un micro à 2 go et 3 go de ram…bon je n’ai qu’une carte graphique intégrée …mais quand meme…

Avec la meme résolution et plus de détails j’ai 900 fps avec Unity….oups…auriez vous une réponse ou si vous connaissez quelqu’un qui l’utilise…?…je suis dans le brouillard complet…

Cordialement

avatar

giyomu —

les 900 fps que tu as c’est via un script FPS ou sur les stats dans l editeur d unity ?

j’ai lu de source de Guru unity ^^ que ce fps ds les stats n’etait pas representatif du reel fps de l’application finla une fois compile, en gros c montre le temps mis pour afficher les frames a l ecran >> dans la doc il disent ca >>

How much time it takes to process and render one game frame (and resulting FPS). Note that this number only includes frame update and rendering of the game view

alors qu a priori ds ton appli le fps que tu cherche a connaitre c celui qui va te rafraichir/updater et redessiner ta scene X fois par seconde , et pas le temps mis pour dessiner chaque frame, c un peu confu je sais ^^

en gros je n ai jamais le meme resultat des stats une fois mon app compile et avec un script qui lui me me montre le fps de l app , dc « stats fps a prendre avec des pincette »

maintenant si c un fps via script , ds ce ca unity par defaut essaye de rafraichir le plus possible, et si le vsync du moniteur est sur on, si le jeu rafaraichis a 900fps il affichera qd meme 900fps meme si le moniteur n est en sois pas capable de rafraichir a ce taux.

maintenant pour unreal je sais pas comment il procede pour calculer leur fps et est ce que ta light est dynamic pour toute la scene etc..

avatar

GuyTina —

Re.

C’est le fps que Unity donne dans l’editeur….

J’avais placé une lumiere choisie dans leur palette d’objet et elle eclairait toute la scene…

avatar

giyomu —

ouais donc le fps de unity dans l editeur il est pas representatif du fps reel de l app une fois compile, enfin pas directement

apres sur unreal je sais pas mais j imagin que si tu a uen lumiere dynamique pour tout les objet de la scene ca risque de consommer enorme en resources aussi.

avatar

TheDarkAnthology —

« Arrghhnnn » « Poum , pam et Paf » xD .Sinon Excellent tutorial, merci beaucoup .

avatar

douras —

Assets/Guibutton.js(3,47): BCE0044: expecting ), found ‘{‘.
Assets/Guibutton.js(6,2): BCE0044: expecting EOF, found ‘}’.

Voilà, je crois avoir fais le bon script mais ça bug, pourquoi?
Sinon, très bons tutos, merci
Pourriez-vous faire un tutoriel sur la personnalisation de personnage (la création de personnages comme dans wow ou les sims ect..)

function OnGUI () {
if (GUI.Button (Rect (20,40,100,40, »bunker »)) {
var target1=GameObject.Find(« Main_Bunker »);
target1.renderer.enabled=false;
}}

avatar

Tellurian

Bonjour Douras,

T’as oublié une parenthèse pour le constructeur de l’objet Rect.

Ce qui donne :

function OnGUI ()
{
if (GUI.Button(Rect(20, 40, 100, 40), « bunker »))
{
var target1 = GameObject.Find(« Main_Bunker »);
target1.renderer.enabled = false;
}
}

PS : Sinon, quand on code, il faut prendre pour habitude d’indenter son code et de respecter une certaine nomenclature pour éviter ce genre de désagrément, comme par exemple fermer une accolade dès que l’on en ouvre une et ensuite écrire entre les deux, etc

D’autre part, je ne pense pas qu’il soit obligatoire de créer une variable(plutôt une référence dans le cas qui nous concerne) pour travailler sur l’objet « Main_Bunker ».

Ce code devrait donc fonctionner aussi :

function OnGUI ()
{
if (GUI.Button(Rect(20, 40, 100, 40), « bunker »))
GameObject.Find(« Main_Bunker »).renderer.enabled = false;
}

avatar

Tellurian

bon évidemment l’indentation ne fonctionne pas dans un textarea HTML ^^’

avatar

douras —

Merci beaucoup, je tiendrais compte de vos conseils.

avatar

douras —

Hum… Assets/bouton.js(4,39): BCE0044: unexpected char: 0xAB.
Avec les 2 de tes scripts ça me fait ça (je suis sous monodevelop), pourquoi? J’ai pourtant fait un copié/collé! je crois que je suis meilleur en conception/modélisation qu’en programmation. mon MMORPG ne risque pas de sortir de ci-tôt! ;)

avatar

CallOfBurger —

voilà j’essaye de lancer le truc avec la touche play mais ça marche pas, j’ai pourtant fait tout bien comme il faut …
ça donne :
All Compilers errors have to be fixed before you can enter the playmode

que faire ? compiler ?

avatar

Ogjee —

bonjour
j’ai tape le code suivant;

function OnGUI() {
if(GUI.Button(Rect(20,40,100,40), »Palmier »)) {
var target1=GameObject.Find(« Palm1″);
target1.Renderer.enabled=false;
}
}

c’est a dire le copié collé de ce qu’il y a ds la video..tout marche bien jusqu’à ce que j’apuie sur le bouton .
a ce moment Unity m’affiche l’erreur;
NullReferenceException: Object reference not set to an instance of an object
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.String cacheKeyName, System.Type[] cacheKeyTypes, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.Object[] args, System.String cacheKeyName, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.SetProperty (System.Object target, System.String name, System.Object value)
script bouton.OnGUI () (at Assets/script bouton.js:5)
Svp à l’aiiiide
Ps; il y a bien un objet Palm1 dans ma hierarchie
et pour info je suis sur mac et jutilise BBedit pour le script..

avatar

krys64 —

Faux, ce n’est pas un copier coller, il y a une erreur ici :
target1.Renderer.enabled=false;
qui devient
target1.renderer.enabled=false;

avatar

Ogjee —

merci

avatar

Enaelle —

bonjour, très bonne explication, vos tutos m’aident beaucoup! malheureusement en essayant d’adapter avec un GUItexture, en modifiant la position pour le faire apparaitre, il apparait, mais ne disparait pas au reclick :

var _panneau : GameObject;
private var _animer: boolean;

if(animer) _animer = false;
else _animer = true;

function Start () {
_animer= false;
}
function Update () {
if(!_animer) return;
_panneau.transform.localPosition.y=0.1;
}
function OnMouseDown() {
if(_animer) _animer = false;
else _animer = true;
}
j’ai essayer un else sans resultats

avatar

repi7971 —

Bonjour , tout d’abord merci car vos tutos sont super
Mais j’ai une question concernant le script
J’ai utilisé le script « Bouton » sur un mur pour que le personnage puisse passer mais
le script n’enlève pas la box collider de l’objet
J’aimerai savoir comment enlever la box collider de l’objet grace au script pour que le personnage puisse
passer quand il a appuyé sur le bouton
Merci d’avance

avatar

MagixGame

Zut, nous avons tous le même problème. Pareil que douras si ça continue mon jeu ne sortira qu’en octobre en 2013 :/

Je sais pas comment faire… Une suggestion SVP?
J’utilise MonoDevelop

avatar

MagixGame

Désolé du double post mais j’en profite aussi pour dire que ces vidéos sont bien faites ! Merci !

avatar

Shaowkan —

Bonjour , je suis les video (qui sont super d’ailleur ^^) et j’ai un probleme avec le code javascript :

function OnGUI() {
if (GUI.Button(Rect(20,40,100,40), »Palmier1″)) {
var target1=GameObject.Find(« palm1″);
target1.renderer.enabled=false;

}}
En lançant le jeu , les bouton s’affiche mais quand je clique , le palmier ne s’enleve pas et j’obtient une Erreur :

NullReferenceException
ScriptBoutons.OnGUI () (at Assets/ScriptBoutons.js:4)

Comment faire s’il vous plait ??

avatar

claymore —

Après avoir créé le fichier script, je n’ai pas de bouton editer, uniquement open et exécution order. et lorsque je clic sur Open, trois fenêtres MonoDevelop-Unity souvrent mais restent blanches. :(

Exprimez-vous !

This blog is monetized using Are-PayPal WP Plugin