Jump to content
Unity Insider Forum

FileStriker

Members
  • Posts

    85
  • Joined

  • Last visited

  • Days Won

    4

FileStriker last won the day on May 2 2017

FileStriker had the most liked content!

About FileStriker

  • Birthday 11/28/1997

Profile Information

  • Gender
    Male
  • Location
    NRW

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

FileStriker's Achievements

Advanced Member

Advanced Member (3/3)

20

Reputation

  1. Hallo Leute, Wenn man ein ScriptableObject erstellt und dieses sich im Inspector anschaut, dann ist auf der linken Seite ein Button mit der Aufschrift "Open" zu sehen. Wie aber kann ich dem Butten auch diese Funktion zuweisen? Ich habe bereits ein Script geschrieben, mit dem ich die SOs dieses Typen bearbeiten kann. Es wäre aber auch schön, wenn ich das SO über das klicken des Buttons reinladen könnte. Bisher hab ich das immer so gelöst, dass ich ein Weiteren Button mit "Open" erzeugt habe. Aber warum sollte ich zwei mal den gleichen haben, mit dem Zusatz dass nur einen verwenden kann. Auch wäre es gut wenn ich es sich nicht nur durch das drücken eines Buttons, sondern auch mit Hilfe eines einfachen Doppelklicks öffnen würde. Ähnlich wie beim Animation Controller. Ist das Möglich? LG FileStriker
  2. Also ich würde so vorgehen: Zu aller erst benötigst du zwei Listen, eine für die Buttons und eine für die Spawnpunkte. Einer dieser Listen klapperst du dann im Skript ganz normal von oben nach unten ab, bei der Anden lässt du eine Indexnummer durch Zufall aussuchen, weist den Button seinen Spawnpunkt zu und löscht den durch Zufall ausgewählten Listeneintrag, damit dieser nicht doppelt dran kommt. Auf jeden Fall solltest du darauf achten, dass du den Spawnpunkt als Parentobject hast und der Button sein Child ist .Danach nullst du die lokale Position vom Button. Ich weiß jetzt nicht wie genau das mit der Funktion gemeint ist, aber ich würde es mal so deuten, dass durch das Speichern als Prefab der Verweis auf ein Szenenobjekt gelöscht wird. Ein Prefab, solang es nicht in der Szene ist, kann auch nicht auf ein Szenenobjekt verwiesen. Somit musst du dann den Verweis nach dem du den Button erstellt hast durch ein Script erstellen. Ich hoffe ich konnte helfen LG FileStriker
  3. @Tiwaz Das Motto von Youtube ist (war) „Broadcast Yourself“. Wenn du die Lust verspürst Videos zu erstellen, dann mach das! Egal wie gut oder schlecht die sind. Auch wenn es um das Thema Programmieren/Scripten geht. Ob das Video für den Zuschauer hilfreich war entscheidet der Zuschauer selbst. Was bringt es mir, wenn ich mir ein Video anschaue, das vollgestopft mit Fachbegriffen ist und ich nichts verstehe? Zumal sollte man bei einem Tutorial nicht alles 1:1 abtippen, da man irgend wann an den Punkt gelangt etwas einzubauen, zudem man kein Tut findet. Und zack steht man auf dem Schlauch. Man musste sich beim Abtippen keine Gedanken machen und versteht nun nur Bahnhof. In meinen Augen sollte man ein Tutorial nur als Leitfaden nutzen und sich an dem Lösungsweg des Autors orientier und kritisch hinterfragen.Und wenn @QuesterDesura keinen perfekten Code schreibt kann er sich später immer noch verbessert. Es heißt ja nicht um sonst „Aus Fehlern lernt man.“. Sowohl der Zuschauer, weil dieser sich Gedanken über die Änderung macht, und zum anderen er selbst.
  4. Hier mal ein Paar Tipps: Wenn du Strg drückst kannst du dein Objekt um eine Unit verschieben. Mit V kannst du deine Blöcke von Vertice zu Vertice bewegen. Wenn den Textureatlas den Filter Point auswählst müssten keine unschöne Kanten entstehen. So leid es mir tut, aber so wie du das vorhast den Minecraft-Clon zu erstellen wirst du spätestens beim erstellen des Terrains auf die ersten Performanzprobleme stoßen. :/ Das zu wurde vor kurzem erst ein Thema http://forum.unity-c...__fromsearch__1 erstellt. Zudem ist es ein wenig umständlich jeden einzelnen Block manuel zu modellieren. An der Qualität des Videos kann ich aber nicht meckern. Gute Vorbereitung verständlich erklärt relativ wenige Füllwörter wie „äm“ oder „äh“ kaum Sprechpausen
  5. Danke für die Antworten Ich hab jetzt eingefügt, dass man die Übersetzungen sowohl als txt als auch csv Format exportieren kann. Das importieren wird die Tage gescriptet.
  6. Hallo Leute! Heute möchte ich euch mein Tool vorstellen. Es ist zum größtenteils fertig und ich muss (voraussichtlich) nur noch ein paar (kleinere) Funktionen einbauen. Das Editor-Fenster ist jedoch so gut wie fertig. Aber was ist das für ein Tool? Es soll auf möglichst einfache Weise die Texte in euren Spielen managen. So muss kein Text mehr im Script hinein geschrieben, bei Änderungen mühsam heraus gesucht und bearbeitet werden. Mehre sprachen einzustellen ist auch kein Problem mehr. Nur das Editor-Fenster aufrufen, Datei auswählen und bearbeiten. Mit nur einem Klick eine neue Sprache hinzufügen und ebenso mit nur einem Klick für alle Sprachen eine neue zu definierende Variable beifügen. Mit der [myLanguageItem.GetTranslation(„myVariable“)] Funktion kann man dann den Inhalt der Variable mit der zuvor eingestellten Sprache ganz einfach zurück bekommen. Nun hab ich eine paar Frage an euch: Würdet ihr so ein Tool verwenden? Worauf sollte ich besonders achten? Was für Funktionen würdet ihr euch von so einem Tool wünschen außer die einfache Textrückgabe mit der Übersetzung? Ist es sinnvoll dies über ScriptableObjects zu lösen? Das ist Geplant/Eingebaut: Textrückgabe[X] Übersetzungsrückgabe[X] Schnelles erstellen und speichern der Übersetzungen/Variablen[X] Export der Dateien in .txt und .csv Format[X] Import aus .txt und .csv Format[ ] Änderung der Sprache ohne Neustart[X]?*1 *1 Bei Änderung der Sprache werden alle definierten variablen geändert. Vielen Dank fürs Lesen LG FileStriker
  7. Ein Seam kannst du dir wie eine Anleitung für eine Schere vorstellen. Wenn eine Kante markiert wird, wird sie beim Unwrapen vom Rest abgetrennt. Ähnlich wie bei einem Würfel Netz kann man diese stellen auch wieder verbinden. Wenn du Seams richtig gesetzt hast markierst du deine Jacke und drückst [u > Unwrap]. Wenn du alles richtig maskierst hast müssten zwei „Schnittmuster“ entstehen. Der Grund warum ein von mir gedreht ist, ist weil ich dies Manuel gedreht habe, um Platz zu sparen.
  8. Generell würde ich dir aber raten Seams zu verwenden. So kannst du besser Unwrapen Die Bilder zeigen, was ich meine.
  9. Du kannst die mit dem Numpad so ausrichten, dass du z.B. die Vorderseite des Charakters siehst. Dann Drückst du [u > Projekt from view] Nur noch zurecht skalieren und fertig. Ich rate dir in der orthografischen Sicht zu sein, wenn du diese Methode anwendest. Die Sicht kannst du mit [5] auf dem Numpad wechseln.
  10. Hört sich so an, als ob du unter [strg + e > Mark Seam] die Kanten markiert hast (Kanten man an den Roten kanten) Dann wird an der Stelle beim Unwrapen ein Schnitt gesetzt. Zum Löschen musst du die Kante markieren und [strg + e > Clear Seam] auswählen. Dann sollte das Unwrapen wieder gehen. Ps: Bild fehlt
  11. Hallo Leute, Ihr kennt sicherlich das Problem: Ihr erstellt ein Script, welches von ScriptableObject erbt und möchtet dies schnellstmöglich erstellen. Da hab ich die perfekte Lösung für euch: ein Editorscript (http://www.mediafire...ptableObject.cs) Einfach runterladen und in den Editor-Ordner packen. Dieses Script listet alle eure Scripts auf, die von ScriptableObject erben und mit einem einfachen Doppelklick wird ein ScriptableObject erstellt. Ich hoffe ihr findet mindestens genau so viel Nutzen an diesem Script wie ich LG FileStriker
  12. Hallo Leute, Ich hab mal ein kleines, aber nützliches Editorscript geschrieben, welches euch erlaubt ein Cube zu erzeugen, der eine bestimmte Größe hat. Das klinkt zuerst ziemlich sinnlos, da Unity von Haus aus die Möglichkeit bietet ein Cube zu erzeugen und man auch die Größe, durch das Skalieren, verändern kann. Wozu nun dieser Aufwand? Mit meinem Script kann ich sofort, wenn es aufgerufen wird die Größe einstellen. Das spart schon mal Zeit. Nicht viel, aber ein wenig. Den Ursprung des Würfels kann man schnell einstellen, und ihn somit besser rotieren. Die UVs kann man so einstellen, dass,wenn man dem Cube ein Material zufügt, die Textur bei einem Cube von 1m³ genau so groß ist, wie bei einem 3m³ großen Cube Man kann schnell einstellen ob das erstellte Objekt mit dem Ursprung am - Uhrsprung des Parent - Objektes ist - Welt Nullpunkt ist - Fokuspoint der Szenen-Kamera ist (Wie beispielsweise beim erstellen eines normalen Cubes)- Ursprung der Szenen-Kamera ist Nun siehst du, dass es viele kleine Punkte sind, die aber eine Menge an aufwand und Zeit sparen können. Und dieses Script (http://www.mediafire...ateSizedCube.cs) möchte ich euch nun zu Verfügung stellen. Einfach das Script downloaden und ihn den Editor-Ordner einfügen. Zack fertig! Nun könnt ihr das Script unter „GameObject → 3D Object → Sized Cube“ benutzen. Ich hoffe ihr findet Nutzen an dem Script LG FileStriker
  13. Hallo Leute, Erst einmal hoffe ich, dass ich das an der richtigen Stelle poste. Ich hab vor ein paar Tagen ein Script für multi language geschrieben. Für dieses Script braucht ihr einmal ein C# Script mit dem Namen „XmlReader“ und eine XML-Datei, die ihr dann „Languages“ nennt. Das C#-Script sieht so aus: using UnityEngine; using System.Collections; using System.Collections.Generic; using System.IO; using System.Xml; using System.Text; public class XmlReader : MonoBehaviour { public TextAsset dictionary; public int currentLanguage; public string GetName(string name){ XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(dictionary.text); XmlNodeList languageList = xmlDoc.GetElementsByTagName("language"); int i = 0; if(currentLanguage < languageList.Count) i = currentLanguage; XmlNodeList languageContent = languageList[i].ChildNodes; foreach(XmlNode value in languageContent) { if(value.Name == name){ name = value.InnerText; break; } } return name; } } Die xml-Datei könnte dann bei euch z.B. so aussehen: <?xml version="1.0" encoding="utf-8" ?> <languages> <language> <languageName>English</languageName> <Stone>Stone</Stone> <Wood>Wood</Wood> </language> <language> <languageName>Deutsch</languageName> <Stone>Stein</Stone> <Wood>Holz</Wood> </language> </languages> Habt ihr beide Dateien fertig so füge das C#-Script einem GameObject hinzu und an der stelle für „dictionary“ kommt die xml-Datei rein. Mit der Funktion „GetName“ also am Beispiel meiner xml-Datei GetName(„Stone“) und wenn dann zuvor als „currentLanguage = 1“ (Deutsch) ausgewählt wurde bekommt die Funktion als Rückmeldung „Stein“. Hoffe ihr könnt es gebrauche LG FileStriker
  14. Ok ich weiß zwar nicht wie, aber auf einmal kam mir die Idee, das Ergebnis zu Transform zu ändern also: tempPrefab.Add((Transform)EditorUtility.GetPrefabParent(myTarget.enemyNumber[i])); und es hat geklappt
  15. Hallo Leute, Ich steh heute vor folgendem Problem: Ich bin dabei ein Custom Inspector zu schreiben, der mir hilft mein Level zu gestalten Das Problem ist nur, dass ich von den gesetzten Objekten zwar das Prefab bekommen, dies aber nur als Object und nicht als GameObjcet. Meine Frage: Wie kann ich das Prefab als GameObject bekommen, oder wie kann ich es zu einem GameObject ändern? Mein Code aus Wesentlichste beschränkt: using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic; using System.Linq; [CustomEditor(typeof(Spawner))] public class SpawnerEditor : Editor { public int i; public int i2; public override void OnInspectorGUI (){ Spawner myTarget = (Spawner)target; base.DrawDefaultInspector(); if(GUILayout.Button("Convert")){ i = 0; List<Object> tempPrefab; myTarget.enemy = new int[myTarget.enemyNumber.Length]; myTarget.time = new float[myTarget.enemyNumber.Length]; myTarget.position = new float[myTarget.enemyNumber.Length]; myTarget.health = new int[myTarget.enemyNumber.Length]; myTarget.extraEffect = new float[myTarget.enemyNumber.Length]; myTarget.enemyPrefab = new Object[0]; while(i < myTarget.enemyNumber.Length){ tempPrefab = myTarget.enemyPrefab.ToList(); i2 = 0; while(i2 < myTarget.enemyPrefab.Length){ if(myTarget.enemyPrefab[i2] == EditorUtility.GetPrefabParent(myTarget.enemyNumber[i])){ break; }else{ i2 ++; } Debug.Log("i2 " + i2); } /*----------------------------------------------------------------------------------------------------------------------- Hier liegt das Problem: ich kann leider nicht schreiben: (GameObject))EditorUtility.GetPrefabParent(myTarget.enemyNumber[i]); Weil ich dann immmer den Error bekomme, dass Unity Objct nicht zu GameObject ändern kann, jedoch benötige ich die GameObject Form, um z.B. Die Transform Componente zu ändern. -----------------------------------------------------------------------------------------------------------------------*/ if(i2 >= myTarget.enemyPrefab.Length){ tempPrefab.Add(EditorUtility.GetPrefabParent(myTarget.enemyNumber[i])); myTarget.enemy[i] = (int)myTarget.enemyPrefab.Length; }else{ myTarget.enemy[i] = i2; } myTarget.enemyPrefab = tempPrefab.ToArray(); if(myTarget.enemyNumber[i].GetComponent<Transmitter>()){ myTarget.health[i] = myTarget.enemyNumber[i].GetComponent<Transmitter>().health; myTarget.extraEffect[i] =myTarget.enemyNumber[i].GetComponent<Transmitter>().extraEffect; } myTarget.time[i] = myTarget.enemyNumber[i].transform.position.z / 5; myTarget.position[i] = myTarget.enemyNumber[i].transform.position.x; Debug.Log("i " + i); i ++; } } if(GUI.changed){ EditorUtility.SetDirty(myTarget); } } } ERROR Bild LG FileStriker
×
×
  • Create New...