QuesterDesura Posted March 2, 2013 Report Share Posted March 2, 2013 Hallo, ich versuche gerade in der function Update an alle GameObjecte mit dem Tag bauplatss eine Nachricht zu schicken(WoodMenge und den Parameter wood zu übergeben), aber leider habe ich noch nie Arrays und Lists außerhalb eines englischen( :/ ) Tutorials benutzt... Ich habe schon gegoogelt aber nicht das was ich suche gefunden... Das waren meine überlegungen: function Update () { for(GameObject.FindWithTag("bauplatss")) { SendMessage("WoodMenge", wood, SendMessageOptions.DontRequireReceiver); } } Aber leider funktioniert das nicht. Ach ja JAVASCRIPT!!! QuesterDesura Link to comment Share on other sites More sharing options...
Schlumpf Posted March 2, 2013 Report Share Posted March 2, 2013 http://docs.unity3d....me_Objects.html // Find the OtherScript which is attached to any game object in the scene. var other : OtherScript = FindObjectOfType(OtherScript); other.DoSomething(); http://docs.unity3d....ctsWithTag.html gos =GameObject.FindGameObjectsWithTag"bauplatss"); for (var go : GameObject in gos) { go.GetComponent("scriptname").holzvariable="12"; } ungetestet Link to comment Share on other sites More sharing options...
QuesterDesura Posted March 2, 2013 Author Report Share Posted March 2, 2013 Das hilft mir nicht... Es muss in die function Update, da die bauplätze zerstört werden und dann wieder erstellt werden kann ich die nicht im editor assignen aber trotzdem danke ;=) Link to comment Share on other sites More sharing options...
Siebenkeim Posted March 2, 2013 Report Share Posted March 2, 2013 1. Du solltest dir mal paar Tuts anschauen Schleifen gehören zu den Grundlagen 2. bauplatss ernsthaft? Normalerweise heißt es bauplatz 3. WoodMenge ist Denglisch wobei das Geschmackssache ist, ich persönlich mag es garnicht Zu deinem Problem: Du nutzt die for-Schleife was du aber wolltest ist doch die foreach - Schleife. Mit einer foreach Schleife kannst du nur eine Aufzählung durchgehen (Arrays, Lists) int[] intArray = new int[] { 0, 1, 2, 3 }; foreach (int i in intArray) Debug.Log(i); Link to comment Share on other sites More sharing options...
QuesterDesura Posted March 2, 2013 Author Report Share Posted March 2, 2013 wenn ich das richtig sehe tut man die hier aber auch schon vorher im editor assignen und ich möchte für jedes GameObject mit dem Tag bauplatss (z geht nicht...) in jeder frame die nachricht WoodMenge schicken ich meine ints bringen mir nicht so viel und mit schleifen und arrays kenne ich mich nicht aus Link to comment Share on other sites More sharing options...
Schlumpf Posted March 2, 2013 Report Share Posted March 2, 2013 kannst du bitte endlich mit dem drecks denglisch aufhören wenn du es nicht korrekt machst Link to comment Share on other sites More sharing options...
Siebenkeim Posted March 2, 2013 Report Share Posted March 2, 2013 ich meine ints bringen mir nicht so viel und mit schleifen und arrays kenne ich mich nicht aus Dann solltest du es lernen. Was du suchst ist wahrscheinlich das hier: http://docs.unity3d....ctsWithTag.html EDIT: Schlumpf2009 hat oben ein Beispiel gepostet. Link to comment Share on other sites More sharing options...
QuesterDesura Posted March 2, 2013 Author Report Share Posted March 2, 2013 DANKE schlumpf dein editiertes funktioniert(bissel abgeändert aber ansonsten bekommst ne 1+ ) danke für eure Hilfe :=) Link to comment Share on other sites More sharing options...
Schlumpf Posted March 2, 2013 Report Share Posted March 2, 2013 poste mal sie mal bitte für die nachwelt das würde ich sowiso immer machen : du startest mit ner frage du postest die lösung Link to comment Share on other sites More sharing options...
QuesterDesura Posted March 2, 2013 Author Report Share Posted March 2, 2013 ok.... :D function Update () { var gos = GameObject.FindGameObjectsWithTag("bauplatss"); for (var go : GameObject in gos) { go.SendMessage("WoodMenge", wood, SendMessageOptions.DontRequireReceiver); } } Link to comment Share on other sites More sharing options...
Schlumpf Posted March 2, 2013 Report Share Posted March 2, 2013 http://docs.unity3d.com/Documentation/ScriptReference/GameObject.SendMessage.html Link to comment Share on other sites More sharing options...
QuesterDesura Posted March 2, 2013 Author Report Share Posted March 2, 2013 ich nehm gleich meine likes weg.... :D :D ich weiß selber wie ein send message geht und habe das schon 1000000000 mal benutzt.... Link to comment Share on other sites More sharing options...
Schlumpf Posted March 2, 2013 Report Share Posted March 2, 2013 ne es ging nur drum das der link noch dabei is Link to comment Share on other sites More sharing options...
Sascha Posted March 2, 2013 Report Share Posted March 2, 2013 FindGameObjectsWithTag in Update... ich seh wohl nicht richtig... PFUI! Link to comment Share on other sites More sharing options...
HortusLongus Posted March 2, 2013 Report Share Posted March 2, 2013 Son Rechner hat eh meistens nichts zu tun. Link to comment Share on other sites More sharing options...
Sascha Posted March 2, 2013 Report Share Posted March 2, 2013 Sauberer Code ist sauberer Code. Link to comment Share on other sites More sharing options...
QuesterDesura Posted March 2, 2013 Author Report Share Posted March 2, 2013 wie dann? Link to comment Share on other sites More sharing options...
W4KE Posted March 2, 2013 Report Share Posted March 2, 2013 Keine Ahnung wie du das Teil benutzt, aber in Awake sollte das Teil rein. Denn so kannste das nicht lassen, den wenn du das mehrmals machst, geht deine Framerate echt in die Knie. Link to comment Share on other sites More sharing options...
Siebenkeim Posted March 2, 2013 Report Share Posted March 2, 2013 GameObject ist doch eine Klasse also wird es als Referenz übergeben könntest also ihn Awake/Start einmal alle GameObjects durchgehen und in einer Array speichern. Hast ja die Adressen für die Objekte, könntest sie somit auch später bearbeiten. Link to comment Share on other sites More sharing options...
QuesterDesura Posted March 2, 2013 Author Report Share Posted March 2, 2013 hm lesst euch es nochmal ganz in ruhe durch dann wisst ihr warum awake nicht geht... weil im spiel neue dazukommen und alte gelöscht werden... und die müssen auch immer up to date mit den Rohstoffen sein Link to comment Share on other sites More sharing options...
Siebenkeim Posted March 2, 2013 Report Share Posted March 2, 2013 Erstell eine Liste wenn z.B. ein neues Gebäude erstellt wurde (z.B. auf ein Button geklickt) fügst es der Liste hinzu. Somit bist du immer auf dem neusten Stand. Link to comment Share on other sites More sharing options...
QuesterDesura Posted March 2, 2013 Author Report Share Posted March 2, 2013 aber nicht die holz variable von jedem einzelnem objekt schau dir das video an ein strategiespiel machen(www.youtube.com/user/questerdesura) da verstehste es Link to comment Share on other sites More sharing options...
Siebenkeim Posted March 2, 2013 Report Share Posted March 2, 2013 Klar, kannst doch auch von den GameObjects aus auf die Holz Variable zugreifen. Außerdem wäre es vll. besser gewesen Klassen für die Gebäude anzulegen um so die Daten besser zu lagern. Link to comment Share on other sites More sharing options...
koaangel Posted March 2, 2013 Report Share Posted March 2, 2013 GameObject.Find in Update zu verwenden ist ganz böse. Und es gibt in keinem Szenario und keiner Problemstellung die Notwendigkeit, dies zu tun. Hör auf die anderen, denn du schiesst dir damit selbst ins Knie, da du dir deine Performance unnötig selbst herunterziehst. hm lesst euch es nochmal ganz in ruhe durch dann wisst ihr warum awake nicht geht... weil im spiel neue dazukommen und alte gelöscht werden... und die müssen auch immer up to date mit den Rohstoffen sein Dann wäre die saubere Möglichkeit, dass sich die neu erstellen Objekte in ihrer Awake Funktion vom anderen Script die Rohstoffe anfordern oder aber das Script, das sie instanziert, übernimmt die Rohstoffzuweisung. Link to comment Share on other sites More sharing options...
Sascha Posted March 2, 2013 Report Share Posted March 2, 2013 Ich glaube, ich schreibe die Tage mal ein Tutorial, wie man bestimmte Methoden 1:1 ersetzt. //e: Tadaa: Noch mehr Scripten in Unity - Teil 4: Böse Funktionen beseitigen Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.