{"id":2029,"date":"2014-10-25T08:16:38","date_gmt":"2014-10-25T06:16:38","guid":{"rendered":"http:\/\/www.blue-bears.com\/blog\/?p=2029"},"modified":"2015-12-15T21:12:06","modified_gmt":"2015-12-15T20:12:06","slug":"guide-de-lutilisateur-de-unity-debutant","status":"publish","type":"post","link":"http:\/\/www.blue-bears.com\/blog\/?p=2029","title":{"rendered":"Guide de l&rsquo;utilisateur de Unity D\u00e9butant"},"content":{"rendered":"<ul>\n<li>Unity : Tutos officiels : Menu principal : <a title=\"http:\/\/unity3d.com\/learn\/tutorials\/modules\" href=\"http:\/\/unity3d.com\/learn\/tutorials\/modules\" target=\"_blank\">http:\/\/unity3d.com\/learn\/tutorials\/modules<\/a><\/li>\n<li>Unity : Tutos officiels : Scripting : <a title=\"http:\/\/unity3d.com\/learn\/tutorials\/modules\/beginner\/scripting\" href=\"http:\/\/unity3d.com\/learn\/tutorials\/modules\/beginner\/scripting\" target=\"_blank\">http:\/\/unity3d.com\/learn\/tutorials\/modules\/beginner\/scripting<\/a><\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Installations (Gratuits) :\n<ul>\n<li>123D Catch : Autodesk =&gt; Photos 2D (.jpg &amp; .tiff) =&gt; Objet 3D =&gt; export .obj avec Texture. [Ne fonctionne pas =&gt; d\u00e9sinstall\u00e9 ]<\/li>\n<li>Google Earth =&gt; Photos Street View<\/li>\n<li>GIMP =&gt; Pour remettre d&rsquo;aplomb les photos de Google Earth \/ Streat view dont la perspective est d\u00e9form\u00e9e : Outil =&gt; Transformation =&gt; Perspective.<\/li>\n<li>SweetHome 3D : Plan 3D =&gt; export .obj<\/li>\n<li>PhotoStitch =&gt; transforme plusieurs photos contigu\u00ebs en panoramique<\/li>\n<li>Audacity =&gt; toutes manipulation, transformation, effets, conversion &#8230; sur fichiers sons.<\/li>\n<li><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>Pour les tests pendant le d\u00e9veloppement d\u00e9sactiver 3D<\/li>\n<li>Vid\u00e9os cr\u00e9ation de terrain : <a title=\"http:\/\/www.youtube.com\/watch?v=GBtrC3a0xBA\" href=\"http:\/\/www.youtube.com\/watch?v=GBtrC3a0xBA\" target=\"_blank\">http:\/\/www.youtube.com\/watch?v=GBtrC3a0xBA<\/a>\n<ul>\n<li>Import des Assets (Standards[Charac Controler] &amp; Asset Store[Terrains] &amp; Skybox)<\/li>\n<li>Cr\u00e9ation du terrain (attention pas de menu Terrains) =&gt; les param\u00e8tres (taille) : s\u00e9lectionner le terrain dans la Hi\u00e9rarchie, dans l&rsquo;inspecteur de l&rsquo;Objet terrain,\u00a0 au bout de la barre outil, un engrenage (Param\u00e8tres)<\/li>\n<li>Outils d&rsquo; altitude, plan\u00e9ification.<\/li>\n<li>Ajout de Lumi\u00e8re<\/li>\n<li>Ajout de \u00ab\u00a0Character Contr\u00f4leur\u00a0\u00bb \u00e0 OVR Camera controller<\/li>\n<li>Ajour de ciel : FirstPersControl=&gt; MainCam=&gt;\n<ul>\n<li>Component=&gt; Rendering =&gt; Skybox<\/li>\n<li>Ajouter un ciel dans \u00ab\u00a0custom skybox\u00a0\u00bb (chercher Sky dans Assets)<\/li>\n<li>Dans le cas de l&rsquo;Oculus les attacher \u00e0 Cam Droite &amp; Cam Gauche<\/li>\n<\/ul>\n<\/li>\n<li>Ajout a objet \u00ab\u00a0Camera\u00a0\u00bb =&gt; Component =&gt; Camera contr\u00f4le =&gt; Mouse-Look.<\/li>\n<li>Ajout de textures terrain<\/li>\n<li>Ajout de plantes : Arbres, buissons, herbe (cool, \u00e7a bouge avec le vent : r\u00e9glage ds terrain),<\/li>\n<\/ul>\n<\/li>\n<li>Vid\u00e9o effet d&rsquo;Eaux : <a title=\"http:\/\/www.youtube.com\/watch?v=kPQJTml1eJs\" href=\"http:\/\/www.youtube.com\/watch?v=kPQJTml1eJs\" target=\"_blank\">http:\/\/www.youtube.com\/watch?v=kPQJTml1eJs<\/a>\n<ul>\n<li>Import Asset [Water (Basic)]<\/li>\n<li>Animation d&rsquo;objet<\/li>\n<\/ul>\n<\/li>\n<li>Vid\u00e9o effet d&rsquo;Eaux (Version Pro) : <a title=\"http:\/\/www.youtube.com\/watch?v=ky7khEvPTSA\" href=\"http:\/\/www.youtube.com\/watch?v=ky7khEvPTSA\" target=\"_blank\">http:\/\/www.youtube.com\/watch?v=ky7khEvPTSA<\/a>\n<ul>\n<li>(Windows) Project =&gt; Asset =&gt; (Click D) =&gt; Create =&gt; Material=&gt; Nommer Water.<\/li>\n<li>(Menu) Assets=&gt; Import Package =&gt; Water Pro; Flare<\/li>\n<li>(Inspect) Material : Water =&gt; Shader =&gt; FX =&gt; Water<\/li>\n<li>(Menu) GameObject =&gt; Create Other =&gt; Plane<\/li>\n<li>(Win) Project =&gt; Asset =&gt; Standard =&gt; Water Pro =&gt; Sources =&gt; Scripts =&gt; Water<\/li>\n<li>Attacher Material \u00ab\u00a0Water\u00a0\u00bb \u00e0 Plane.<\/li>\n<li>Attacher Script \u00ab\u00a0Water\u00a0\u00bb \u00e0 Plane.<\/li>\n<li>Directionnel Light =&gt; Flare =&gt; 50 mm Zoom<\/li>\n<li>(Inspect) Plane =&gt; Water =&gt;\n<ul>\n<li>Fresnel =&gt;Select : \u00ab\u00a0Water Fresnel\u00a0\u00bb<\/li>\n<li>NormalMap =&gt; Select : \u00ab\u00a0SmallWave\u00a0\u00bb<\/li>\n<li>Reflectiv Color Cube =&gt; \u00ab\u00a0Ocean Gradient\u00a0\u00bb (???)<\/li>\n<li>Simple Water Horizon Color =&gt; \u00ab\u00a0Water Fallback\u00a0\u00bb<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Video : Audio, Effets Sonores : <a title=\"http:\/\/www.youtube.com\/watch?v=GLpjppAsW40\" href=\"http:\/\/www.youtube.com\/watch?v=GLpjppAsW40\" target=\"_blank\">http:\/\/www.youtube.com\/watch?v=GLpjppAsW40<\/a><\/li>\n<li>Video : Audio, Effets Sonores (Official tuto) : <a title=\"http:\/\/www.youtube.com\/watch?v=1BMJFgK68IU \" href=\"http:\/\/www.youtube.com\/watch?v=1BMJFgK68IU\u00a0\" target=\"_blank\">http:\/\/www.youtube.com\/watch?v=1BMJFgK68IU\u00a0<\/a>\n<ul>\n<li>Sur les cam\u00e9ras =&gt; Component =&gt; Audio Listener (position de celui qui \u00e9coute)<\/li>\n<li>Sur un objet =&gt; (Menu) Component =&gt; Audio =&gt; Audio Source\n<ul>\n<li>Sur objet son : cercles bleus d\u00e9limite la zone d&rsquo;audition.<\/li>\n<li>Volume Rolloff =&gt; diminution son selon distance<\/li>\n<li>Pan Rolloff =&gt; Diminution effet st\u00e9r\u00e9o avec distance<\/li>\n<li>Spread Rolloff =&gt; diminution angle 3D en Multi-channel (Suround)<\/li>\n<\/ul>\n<\/li>\n<li>Source sons : Bip, laser etc &#8230; <a title=\"http:\/\/www.bfxr.net\/\" href=\"http:\/\/www.bfxr.net\/\" target=\"_blank\">http:\/\/www.bfxr.net\/<\/a><\/li>\n<li>Source de sons : <a title=\"http:\/\/www.universal-soundbank.com\" href=\"http:\/\/www.universal-soundbank.com\" target=\"_blank\">http:\/\/www.universal-soundbank.com<\/a>\n<ul>\n<li>Capter avec Audacity.<\/li>\n<\/ul>\n<\/li>\n<li>100 m\u00e8tres en distance max de perception, fonction Log, v\u00e9rifier dernier point (le plus loin) \u00e0 0 !<\/li>\n<\/ul>\n<\/li>\n<li>Audio, Effets Sonores : Game Object =&gt; Create Other =&gt; Reverb Zone.\n<ul>\n<li>2 zones Objet : Min dist \/ Max Dis (transition entre D\u00e9but et Max effet)<\/li>\n<li>Attention : [Free] pas de sauvegarde des r\u00e9glages \u00ab\u00a0User\u00a0\u00bb<\/li>\n<li>Attention : L&rsquo;effet \u00ab\u00a0traverse les murs\u00a0\u00bb.<\/li>\n<\/ul>\n<\/li>\n<li>Audio, Effet sonore : Zone de Silence :\n<ul>\n<li>Couper tous les sons quand on arrive dans une zone : semble ne se faire qu&rsquo;en script (cf exemple de code):\n<ul>\n<li><a title=\"http:\/\/answers.unity3d.com\/questions\/194110\/how-to-stop-all-audio.html\" href=\"http:\/\/answers.unity3d.com\/questions\/194110\/how-to-stop-all-audio.html\" target=\"_blank\">http:\/\/answers.unity3d.com\/questions\/194110\/how-to-stop-all-audio.html<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Animation :\n<ul>\n<li>Menu =&gt; Window =&gt; Animation<\/li>\n<li>S\u00e9lectionner un item (FPSControler ou MainCamera)<\/li>\n<li>Poser une Keyframes =&gt; sectionner en cliquant =&gt; Positionner la cam\u00e9ra<\/li>\n<li>Unity interpole la position entre 2 keyframes en translation (X,Y,Z) et en rotation (X,Y,Z). Les courbes d&rsquo;interpolation dans l&rsquo;onglet inf\u00e9rieur (Curves)<\/li>\n<li>Samples : d\u00e9fini la vitesse d\u2019ex\u00e9cution =&gt; petit = lent<\/li>\n<\/ul>\n<\/li>\n<li>Import SweetHome3D :\n<ul>\n<li>Dans SweetHome3D =&gt; Menu\u00a0 Vue 3D =&gt; Export au format .OBJ<\/li>\n<li>Sauvegarder dans l&rsquo;arborescence Unity\/Assets\/<\/li>\n<li>Le composant apparait dans les Assets.<\/li>\n<\/ul>\n<\/li>\n<li>Scripting : <a title=\"http:\/\/unity3d.com\/learn\/tutorials\/modules\/beginner\/scripting\" href=\"http:\/\/unity3d.com\/learn\/tutorials\/modules\/beginner\/scripting\" target=\"_blank\">tuto officiel<\/a> :<\/li>\n<li>La programmation en C# est proche de VBA : \u00ab\u00a0Objet.propri\u00e9t\u00e9.sous-propri\u00e9t\u00e9&#8230; = valeur\u00a0\u00bb en \u00e9criture (inverse en lecture) :<\/li>\n<li>GameObject.renderer.material.color = Color.red;<\/li>\n<li><a title=\"file:\/\/\/C:\/Program%20Files%20%28x86%29\/Unity\/Editor\/Data\/Documentation\/html\/en\/ScriptReference\/index.html\" href=\"file:\/\/\/C:\/Program%20Files%20%28x86%29\/Unity\/Editor\/Data\/Documentation\/html\/en\/ScriptReference\/index.html\" target=\"_blank\">R\u00e9f\u00e9rence <\/a>: classe \/ propri\u00e9t\u00e9s &#8230;\n<ul>\n<li>Les propri\u00e9t\u00e9s d&rsquo;un objet apparaissent dans l&rsquo;onglet Inspector\n<ul>\n<li>transform =&gt; position =&gt; x : transform.position.x<\/li>\n<\/ul>\n<\/li>\n<li>Marquer obligatoirement fin de ligne par [;] &#8230; comme en PHP.<\/li>\n<\/ul>\n<\/li>\n<li>Condition :\n<ul>\n<li>if(condition){instructions si vrai;}; idem else if; else<\/li>\n<\/ul>\n<\/li>\n<li>Loop :\n<ul>\n<li>while(condition){code}do{code}while(condition); (ne pas oublier le point-virgule)<\/li>\n<li>for(type Variable = valeur initial; Variable = valeur fin; Variable incr\u00e9ment){code};\n<ul>\n<li>for(int i = 0; i &lt; numEnemies; i++) { Debug.Log(\u00ab\u00a0Creating enemy number: \u00a0\u00bb + i);}<\/li>\n<li>Attention les s\u00e9parateur sont [;]<\/li>\n<\/ul>\n<\/li>\n<li>foreach : comme en php pour des array\n<ul>\n<li>foreach(type NomVar in NomArray){code}<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Incr\u00e9ement :\n<ul>\n<li>Variable ++;Variable &#8211;;<\/li>\n<\/ul>\n<\/li>\n<li>le nom du fichier doit correspondre au nom indiqu\u00e9 dans le fichier \u00e0 class =&gt; Si la Class est :\u00a0 \u00ab\u00a0Public Class MyClass : MonoBehavior\u00a0\u00bb alors le fichier doit \u00eatre nomm\u00e9 MyClass.cs (pour un script en C#)<\/li>\n<li>Le script, si il est dans le dossier du projet, est trouv\u00e9 dans l&rsquo;inspector de l&rsquo;objet =&gt; AddComponent =&gt; Soit Search par son nom, soit Scripts (liste).<\/li>\n<li>Fonction :\n<ul>\n<li>Type retourn\u00e9 : int (entier) ; void(=rien); bool (oui\/nom); vector3 (position x,y,z);Color;<\/li>\n<li>Nom fonction<\/li>\n<li>Variables (parameters) entre () avec\u00a0 type de chaque param\u00e8tre\n<ul>\n<li>float Multiplier(float valeur1)<\/li>\n<\/ul>\n<\/li>\n<li>d\u00e9but \/ fin fonction {}<\/li>\n<li>ajout d&rsquo;une variable : type + nom variable<\/li>\n<li>Valeur renvoy\u00e9 = return (+ nom de la variable de r\u00e9sultat)<\/li>\n<li>fonctions r\u00e9serv\u00e9es :\n<ul>\n<li>void start() {} : fonction charg\u00e9e lorsque le script est ajout\u00e9 \u00e0 l&rsquo;objet<\/li>\n<li>void update(){} :<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Debugage : ins\u00e9rer dans le code : debug.log (NomVariable); le r\u00e9sultat apparait dans la fen\u00eatre console, click sur l&rsquo;icone [!] pour voir les messages.<\/li>\n<li>Commentaires : comme php\n<ul>\n<li>1 ligne : \/\/<\/li>\n<li>multiple : d\u00e9but \/* et fin *\/<\/li>\n<\/ul>\n<\/li>\n<li>Les nombres : en virgule flottante = float doivent \u00eatre suivis de la lettre f\n<ul>\n<li>float toto = 50f;<\/li>\n<\/ul>\n<\/li>\n<li>array :\n<ul>\n<li>d\u00e9claration : type[] NomArray = new type[nb \u00e9l\u00e9ments];<\/li>\n<\/ul>\n<\/li>\n<li>Scope des variables et des fonctions :\n<ul>\n<li>Public : variable ou fonction accessible d&rsquo;un autre script.\n<ul>\n<li>Seul les variables publiques sont visibles dans l&rsquo;inspector<\/li>\n<li>L&rsquo;inspector peut les modifier. ces modif sont conserv\u00e9e m\u00eame apr\u00e8s l&rsquo;arr\u00eat du script.<\/li>\n<li>Pour les r\u00e9initialiser au lancement du script : indiquer les valeur dans la fonction : void start{};<\/li>\n<\/ul>\n<\/li>\n<li>Private : (par defaut) accessible uniquement dans la classe<\/li>\n<li>Locales (Variables) :\u00a0 accessible uniquement dans la fonction o\u00f9 elle sont initialis\u00e9es.<\/li>\n<\/ul>\n<\/li>\n<li>Appel de fonctions externes [Scope &amp; Access]:\n<ul>\n<li>uniquement des fonctions d\u00e9clar\u00e9es publiques :\n<ul>\n<li>NomDeLaClasse.NomFonction (Variables);<\/li>\n<\/ul>\n<\/li>\n<li>D\u00e9claration en en-t\u00eate de classe : Private ClasseInterne ClasseAppel\u00e9e;<\/li>\n<li>R\u00e9cup\u00e9ration dans le corps d&rsquo;une fonction de ClasseInterne:\n<ul>\n<li>initialisation : ClasseInterne = New ClasseApplel\u00e9e();\n<ul>\n<li>ClasseInterne.FonctionOuValeurdeClasseAppel\u00e9e (du type d\u00e9fini dans ClasseAppel\u00e9e)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Initialisation [Awake &amp; Start] :\n<ul>\n<li>Awake(); initialisation m\u00eame si le composant n&rsquo;est pas activ\u00e9s dans l&rsquo;Inspector (pour initialiser des scripts qui lui font r\u00e9f\u00e9rence et qui eux sont activ\u00e9s).<\/li>\n<li>Start(); initialisation si le composant est activ\u00e9 dans l&rsquo;Inspector.<\/li>\n<li>update(); tourne \u00e0 chaque frame.<\/li>\n<li>fixedupdate(); tourne \u00e0 intervalle de temps fixe.<\/li>\n<\/ul>\n<\/li>\n<li>Calcul Vectoriel [Vector Math]<\/li>\n<li>[GetComponent]\n<ul>\n<li>permet de lire\/\u00e9crire la valeur des variables d&rsquo;un autre composant (objet, script, etc&#8230;)<\/li>\n<li>D\u00e9claration : Public\/Private NomObjetAppel\u00e9 NomObjetLocal;<\/li>\n<li>r\u00e9cup\u00e9ration :\u00a0 NomObjetLocal = GetComponent&lt;NomObjetApplel\u00e9&gt;();<\/li>\n<li>Si NomObjetAppel\u00e9 \u00e0 un param\u00e9tre de nom Param, alors on le r\u00e9cup\u00e8re avec :\n<ul>\n<li>NomObjetLocal.Param<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Activer Composant :\n<ul>\n<li>MyVar (du m\u00eame type que celui renvoy\u00e9 par le composant)= GetComponent&lt;NomComposant&gt;();<\/li>\n<li>MyVar.enabled = true ou false; \/\/ une fois<\/li>\n<li>MyVar.enabled = !MyVar.enabled; \/\/ fait un switch true&lt;=&gt;False<\/li>\n<li>Rappel : les scripts sont eux-m\u00eame des composants &#8230; on peut donc les d\u00e9sactiver.<\/li>\n<li>Dans une hi\u00e9rarchie d&rsquo;objets Parents &amp; Enfants, d\u00e9sactiver le Parent fait disparaitre l&rsquo;Enfant &#8230; mais celui-ci reste cependant \u00ab\u00a0Actif\u00a0\u00bb\n<ul>\n<li>on peu savoir si un composant est d\u00e9sactiv\u00e9 sp\u00e9cifiquement ou parce que sa hi\u00e9rarchie est d\u00e9sactiv\u00e9.<\/li>\n<\/ul>\n<\/li>\n<li>D\u00e9sactiver un Objet : NomObjet.SetActive(false);<\/li>\n<li><\/li>\n<\/ul>\n<\/li>\n<li>[Translate &amp; Rotate] &amp; [deltatime] :\n<ul>\n<li>transform.Translate(new Vector3(x,y,z));\n<ul>\n<li>a chaque frame l&rsquo;objet est d\u00e9plac\u00e9 de x,y,z unit\u00e9.<\/li>\n<li>Mais comme chaque frame prend plus ou moins de temps \u00e0 \u00eatre rendue, la vitesse peu paraitre variable, deltatime donne l&rsquo;inverse du temps en seconde de cr\u00e9ation de la frame.<\/li>\n<li>multiplier par \u00ab\u00a0time.deltatime\u00a0\u00bb permet de passer en vitesse en m\/s constante.<\/li>\n<li>Tuto donne une script complet sur la gestion du mouvement de la vitesse et de la rotation.<\/li>\n<li>Applicable aux corps solides =&gt; pas aux effets<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>[Look At] :\n<ul>\n<li>permet de diriger en permanence le z d&rsquo;un objet vers un autre.\n<ul>\n<li>Cam\u00e9ra qui suit un objet par exemple.<\/li>\n<li>transform.LookAt(target);<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>[Lerp] :\n<ul>\n<li>Linear Interpolate : TypeVarFromTo.lerp(From;To;Time);<\/li>\n<li>TypeVarFromTo\u00a0: Vector3 (vecteur position) ; Mathf (float);Color;<\/li>\n<\/ul>\n<\/li>\n<li>[Destroy]\n<ul>\n<li>supprime une hi\u00e9rarchie, un Objet, un composant.<\/li>\n<li>destroy(Objet\/composant, d\u00e9lais en secondes);<\/li>\n<\/ul>\n<\/li>\n<li>[GetButton &amp; GetKey]\n<ul>\n<li>recevoir les valeurs pass\u00e9es par l&rsquo;utilisateur : classe input<\/li>\n<li>Les touches sont pr\u00e8-nommer : keycode.space; up; down; A;B&#8230;.<\/li>\n<li>On peux appeler \u00e0 la place des touches, des fonctions dites Button, qui r\u00e9f\u00e8rent des actions : \u00ab\u00a0jump\u00a0\u00bb, \u00ab\u00a0run\u00a0\u00bb &#8230; et modifier les touches correspondantes Menu=&gt;Edit=&gt; ProjectSetting=&gt; Input<\/li>\n<li>Etats Bool\u00e9ens (True\/False) : GetKeyDown (enfonce\/1frame); GetKey (maintien);GetKeyUp (relache\/1frame) (idem avec GetButton)<\/li>\n<li>Diff\u00e9rences ? GetKey interroge une touche pr\u00e9cise; GetButton interroge la touche programm\u00e9e pour l&rsquo;action.<\/li>\n<\/ul>\n<\/li>\n<li>[GetAxis]\n<ul>\n<li>recevoir les valeurs pass\u00e9es par l&rsquo;utilisateur : classe input<\/li>\n<li>retourn un Float compris entre -1 et 1 avec une valeur de repos \u00e0 0<\/li>\n<li>Sensitivity d\u00e9termine la vitesse \u00e0 laquelle la valeur atteint -1 ou 1<\/li>\n<li>Gravity d\u00e9termine la vitesse \u00e0 laquelle la valeur revient \u00e0 0<\/li>\n<li>Dead : la sensibilit\u00e9 au neutre du joystick<\/li>\n<\/ul>\n<\/li>\n<li>[OnMouseDown]\n<ul>\n<li>idem OnClic VBA : Void OnMouseDown();{code};<\/li>\n<li>Script d&rsquo;exemple int\u00e9ressant avec Rigidbody + action + gravit\u00e9 : une porte est \u00e9ject\u00e9e au clic et rebondie.<\/li>\n<\/ul>\n<\/li>\n<li>[Data Type] idem ByVal &amp; ByRef de VBA\n<ul>\n<li>Il faut indiqu\u00e9 \u00e0 la cr\u00e9ation le type de variable : en Value comme en Reference.<\/li>\n<li>Value\n<ul>\n<li>int; float;double;bool;char;<\/li>\n<li>structs : vector3;Quaternion<\/li>\n<\/ul>\n<\/li>\n<li>Reference\n<ul>\n<li>Classes\n<ul>\n<li>transform<\/li>\n<li>gameobject<\/li>\n<\/ul>\n<\/li>\n<li>Si l&rsquo;on r\u00e9cup\u00e8re en local la valeur des variables (Value) d&rsquo;un objet, changer cette valeur local ne modifie pas l&rsquo;objet appel\u00e9.<\/li>\n<li>Si l&rsquo;on r\u00e9cup\u00e8re l&rsquo;adresse (Reference) de l&rsquo;objet et que l&rsquo;on en fait une variable, alors changer la variable local change l&rsquo;objet distant.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Programation : Une fonction =&gt; 1 programme \u00e0 part : ne pas tout mettre dans le m\u00eame =&gt; important de bine concevoir ce blocs de fonctions =&gt; ils seront souvent r\u00e9utilis\u00e9s.<\/li>\n<li>[Class &amp; Constructor]\n<ul>\n<li>Class = cat\u00e9gorie (ex : position, contr\u00f4le, munitions, &#8230;.)<\/li>\n<li>les \u00e9l\u00e9ments sont d\u00e9finis par un Constructor (ces propri\u00e9t\u00e9s et le type de valeurs qui les d\u00e9finissent)<\/li>\n<li>Un m\u00eame \u00e9l\u00e9ment peut \u00eatre d\u00e9finis de mani\u00e8re diff\u00e9rente (nb d&rsquo;arguments &amp; leur type). A l&rsquo;usage les valeurs qui sont pass\u00e9es (type et nombre d&rsquo;arguments) permette de savoir quel format utiliser.<\/li>\n<\/ul>\n<\/li>\n<li>[instantiate]\n<ul>\n<li>faire g\u00e9n\u00e9rer par code des objets complets (prefabs)<\/li>\n<li>D\u00e9claration de l&rsquo;objet en Public\/Private RigidBody NomObjet;<\/li>\n<li>D\u00e9claration de son instance en RigidBody NomInstance;<\/li>\n<li>NomInstance = Instantiate(NomObjet ,(attention Virgule), position, rotation) as RigidBody;<\/li>\n<\/ul>\n<\/li>\n<li><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Unity : Tutos officiels : Menu principal : http:\/\/unity3d.com\/learn\/tutorials\/modules Unity : Tutos officiels : Scripting : http:\/\/unity3d.com\/learn\/tutorials\/modules\/beginner\/scripting<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,24],"tags":[],"class_list":["post-2029","post","type-post","status-publish","format-standard","hentry","category-non-classe","category-creation-3d"],"_links":{"self":[{"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2029","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2029"}],"version-history":[{"count":83,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2029\/revisions"}],"predecessor-version":[{"id":2646,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2029\/revisions\/2646"}],"wp:attachment":[{"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2029"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}