Le 22 août 2017 à 23:50:24 TheRealMarco a écrit :
Ludoxe, et pourtant ce script marche parfaitement. Pour que votre classe se mette à jour dans l'inspecteur, c'est plus compliqué, il faut créer une classe qui hérite d'Editor et qui dessine celle que vous souhaitez modifier.
var Texte1 : String; var Texte6 : String; function Update ( ) { Texte6 = Texte1 ; Debug.Log(Texte6); }
Merci mais bizarrement je viens aussi de remarquer que mon script fonctionnait bien ce matin
J'ai une autre question qui va avec ce script, en fait je veux creer un "rapport d'action" de ce que fait quelque chose (un GameObject active un trigger ou on clique sur un bouton) et un script que j'ai raccourci me sert pour faire mon "rapport d'action"
/* Je ne mets pas les variables mais c'est
var Texte1 : String ;
var Texte2 : String ;
var Texte3 : String ;
Jusqu'à 20 */
function Update ( ) {
if(Texte19 == "") {
Texte19 = Texte20 ;
Texte20 = "" ;
}
// Je coupe le code mais c'est la même condition avec la variable Texte mais avec le nombre qui suit diminué de 1 jusqu'à
if(Texte1 == "") {
Texte1 = Texte2 ;
Texte2 = "" ;
}
}
Ensuite j' accede à Texte20 depuis plusieurs scripts différents avec GetComponent et mon script fonctionne... j'utilise un autre script qui me permet d'afficher un GUI des quatre dernières entrées du "rapport d'action" :
function OnGUI() {
GUI.Box( new Rect(250, 0, 970, 90), new GUIContent(
"Rapport des unités : " + GetComponent("Journal rapport").Texte1 + "\n" +
" " +GetComponent("Journal rapport").Texte2 + "\n" +
" " + GetComponent("Journal rapport").Texte3 + "\n" +
" " +GetComponent("Journal rapport").Texte4 + "\n"
, null, ""));
}
Ensuite maintenant mon problème c'est que la 1ère entrée dans le "rapport d'action" est affichées tout en haut mais que la 2eme plus récente juste en dessous et ainsi de suite...
Ce que je veux est un peu l'inverse, que les entrées antérieures soient affichées en dessous des nouvelles entrées...
J'ai essayé d'inverser l'ordre des variables "Texte" mais je veux que la première entrée s'affiche toujours tout en haut avant qu'une deuxième entrée apparaisse... Quelqu'un a une idée de comment s'y prendre ?
Merci
(Je recrute jusqu'a 3 Codeurs)
Pas besoin d'être trois pour faire ça.
Le 23 août 2017 à 01:21:42 Game_vita33 a écrit :
enfaite j'aimerais un script pour que quand mon personnage tombe dans le trou il réapparait au dernier Checkpoint
donc 2eme script que je veux c'est pour les checkpoints
quelqu'un a t-il une idée ?
Tu recherches une idée ou quelqu'un pour le faire ?
Pour les checkpoints, j'aurai utilisé un dictionary<int,transform>, qui stockerai toutes les positions des checkpoints. La valeur int serait pour conserver l'ordre. Et il te faut un autre script pour que quand tu passes une zone de collision, elle change la valeur du dernier checkpoint à un nombre spécifique.
https://msdn.microsoft.com/fr-fr/library/xfhwa508(v=vs.110).aspx
Et pour le trou, tu mets une zone de collision, quand tu détectes le personnage, tu appelles une fonction qui le téléporte (change la valeur de son transform.position au dernier checkpoint).
ludoxe, ça va être plus compliqué que ce que vous avez fait. Dans la classe où il y a une fonction OnGUI, il faudrait créer une variable string (appelons la log) et une méthode.
La fonction serait appelé dès qu'il y a une nouvelle action, avec un string en paramètre. Elle modifierai la valeur de log (log = newString + "\n" + log;
). Et modifierai la valeur affichée :GUI.Box( new Rect(250, 0, 970, 90), new GUIContent(
"Rapport des unités : " + log, null, ""));
if(Texte19 == "") {
Texte19 = Texte20 ;
Texte20 = "" ;
// Il faudrait appeler votre nouvelle fonction ici
}
Bonjour,
@ludoxe :
Pour te simplifier la vie, peut être devrais tu utiliser un tableau de string...
string[] Texte = new string[20];
Pour ton traitement de la remontée des lignes :
for (int index = Texte.Length - 1; index > 1; index--)
if (Texte[index] == "")
{
Texte[index] = Texte[index -1];
Texte[index - 1] = "";
}
Pour l'affichage dans le Gui juste à realiser de même une boucle de type for de type ascendante ou descendante :
for (int index = 0; index < 20; index++)
GetComponent("Journal rapport").Texte[index] + "\n";
Ou
for (int index = 19; index >= 0; index--)
GetComponent("Journal rapport").Texte[index] + "\n";
Attention cet exemple est en C#, a toi de le convertir en UnityScript.
Merci TheRealMarco et UnityCoder pour vos conseils, je vais les appliquer dès que j'ai le temps
Salut ! Je sais pas si ce message va sembler feignant mais bon ^^
Enfaite j'arrive pas du tout a appeler cette fonction parceque je suis débutant au max en C# (je l'apprend sur OpenClassRoom)enfin bref siquelqu'un voudrait bien m'aider ou donner le script sa m'aiderai vraiment beaucoup
Sinon Merci pour votre aide plus haut XD
Bonne Nuit !
Bonjour,
Pour info, le UnityScript va être abandonné pour Unity, seul le C# sera bientôt utilisable comme langage :
https://blogs.unity3d.com/2017/08/11/unityscripts-long-ride-off-into-the-sunset/
Salut ! Je viens à vous parce que j'ai une question.
Je cherche à faire un système de combat tour par tour. Du coup je compte définir l'ordre des tours par une variable de vitesse.
Du coup je cherche à connaitre l'ordre de grandeur des variables. Je suis capable de trouver la plus grande ou la plus petite d'une liste, mais je ne sais pas comment les classer en ordre.
Auriez-vous une idée ? Merci !
Le 29 août 2017 à 00:53:54 taren1452 a écrit :
Du coup je cherche à connaitre l'ordre de grandeur des variables. Je suis capable de trouver la plus grande ou la plus petite d'une liste, mais je ne sais pas comment les classer en ordre.
Je suis pas sûr d'avoir compris. Tu souhaites trier un tableau ou une liste ?
Pour trier une liste : list.Sort();
Pour un tableau : https://msdn.microsoft.com/fr-fr/library/system.array.sort(v=vs.110).aspx
Je me suis mal exprimé ! Je suis désolé ! Je parlais d'un array (un tableau) puisque du coup je peux ajouter ou retirer des variables en cours de combat.
Du coup je voudrais pouvoir trier mes int par ordre de grandeur (par exemple, la première est la plus haute, la dernière la plus petite).
En tout cas merci pour le lien, il me sera bien utile ! ^^
Si je puis me permettre, un tableau te force à avoir un nombre maximal d'éléments (quand tu l'initialises), alors qu'avec une liste, tu peux avoir autant de variables que tu veux.
Bonjour,
Que ce soit un object de type Array ou List leur méthodes Sort sont possibles.
Tu peux aussi utiliser TLink :
using System.Linq;
// ...
var myArray = new int[] { 34, 69, 42, 777 };
var myResults = myArray.OrderByDescending(n => n);
Une autre solution plus sympa est de définir une expression lambda si tu doit réutiliser plusieurs fois dans ton code un ordre de tri particulier serais la suivante :
int[] myData = new int[] { 56, 26, //... ..//, 1 };
List<int> myDataList = new List<int>(myData);
// Sort classique
myData.Sort(data, (x, y) => y.CompareTo(x));
myDataList.Sort((x, y) => y.CompareTo(x));
// Méthode lambda
Comparison<int> reverseCompare = (x, y) => y.CompareTo(x);
// Trie avec methode lambda
Array.Sort(myData, reverseCompare);
myDataList.Sort(reverseCompare);
Il existe aussi une petite nuance qui n'est pas à méconnaitre suivant les différentes méthodes de tri (Sort ou Tlink).
Dans le cas d'un sort l'ensemble des objets originaux peuvent changer de place même si ils représentent dans le test la même valeur (dans ton cas ce n'est pas important se sont des int), alors que dans le cas d'un tlink ceux si ne bougent pas (peut être important parfois).
Bonne continuation.
Re,
Ha oui et sans vouloir remettre en cause le précédent message de Marco.
Dans la mesure du possible utilises des tableaux si bien sur sa taille est connue.
Un jeu vidéo demande rapidité d'execution du code et dans le cadre par exemple d'un acces à un de tes éléments le temps de traitement est en faveur d'un tableau.
Bonjour/Bonsoir
J'ai un gros probléme, Quand je glisse la prefab de mon monstre sur la scène et que je le frappe, il meurt si ses points de vie <=0 , donc pour le moment tout fonctionne .
Maintenant j'ai un spawner à monstre , j'instancie donc la prefab de ce monstre .
Et là , ... ça fonctionne pas bien du tout , quand le monstre a 0 points de vie il joue son animation de mort mais en même temps il continue de me frapper , je peux le tuer plusieurs fois donc je récupéré 3 fois plus d'xp , bref y'a pleins de bug .
Donc du coups le problème vient forcément du fais que le nom du Monstre est "Monstre(Clone) " ????
J'ai donc chercher pendant plusieurs heures comment enlever le Clone , j'ai tout essayer mais rien ne fonctionne .
Voici le code du spawn ( oui il est en JS je sais c'est grave ) :
function Spawning(){
if(leftAmount > 0)
{
var randomNumber : int = Random.Range(0, spawners.Length);
var randomTransform = spawners[randomNumber];
Instantiate(Paladin, randomTransform.transform.position, Quaternion.identity);
// Paladin.name = "Paladin";
leftAmount = leftAmount - 1;
}
Merci d'avance pour les futures réponses ^^ ( Paladin = Le monstre que je veux faire apparaître dans la scéne sans le Clone )
Cordialement,
Le 02 septembre 2017 à 01:11:35 TheUnreaL34 a écrit :
Donc du coups le problème vient forcément du fais que le nom du Monstre est "Monstre(Clone) " ????
Pourquoi ? Quel est le rapport ?
Tu as essayé quelque chose comme ça :
var paladin = Instantiate(Paladin, randomTransform.transform.position, Quaternion.identity);
paladin.gameObject.name = "paladin";
Bonjour,
je suis dégouté : je viens de passer plusieurs heures à modéliser un objet avec blender, le rendu dans blender était magnifique mais quand je l'importe (format fbx) dans unity c'est la catastrophe (c'est tout blanc, aucune texture n'est reconnu) + panneau jaune d'avertissement dans la console d'unity à propos d'un conflit de polygone.
j'étais tellement content de ma modélisation et j'aurais tant aimé la voir s'afficher comme tel dans unity
voici le rendu dans blender :
autre question et problème :
exemple : je prends une photo jpeg de burger et je l'applique sur le cube de base d'unity, la texture s'applique sans problème,
lorsque je fais la même chose avec mon objet blender importé (format fbx), le curseur se transforme en rond barré, unity refuse d'appliquer l'image jpeg à mon objet :
petite consolation : le verre transparent du sablier est bien reconnu dans unity
TheRealMarco => J'ai corriger mon probléme ça venait d'un autre script finalement .
J'ai une question , mon jeu est enfin prêt à être déployer en version 0.1 cependant je sais pas comment faire pour vous envoyer ici sur ce forum mon .rar ( qui possède monprojet.exe et le dossier monprojet_data ) y'a un site ou on peut directement mettre en ligne son .rar auquel cas j'aurai juste juste à vous envoyer l'url ?
Cordialement,
edit => C'est bon j'ai trouver Uploadfiles qui est géniale pour ça :P
Tu peux export en web et l'héberger sur ton site perso pour que ça soit utilisable sans téléchargement.
Sinon MegaUpload, Google Drive, etc...
Bonjour ^^
j'ai un petit soucie avec unity en faite j'ai deux scènes, le joueur peut passer d'une a l'autre et le problème c'est que il y a la même musique dans les deux scènes et qu'elle redémarre a chaque passage de scène j'aimerais que la musique se joue en continue.
et je ne sais pas du tout comment faire.
si vous pouvez m'aider bah merci
Tu peux empêcher de détruire certains GameObject entre deux scenes. Donc tu ne dois pas mettre de gameobjects pour jouer de la musique dans la deuxième scene, et utiliser cette fonction sur celui de la première :
https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html