Jump to content
Unity Insider Forum

Bradley

Members
  • Content Count

    85
  • Joined

  • Last visited

  • Days Won

    4

Bradley last won the day on February 17

Bradley had the most liked content!

Community Reputation

17 Gut

About Bradley

  • Rank
    Advanced Member

Recent Profile Visitors

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

  1. Unity bietet ja als Preview eine Code Coverage Packet an. https://docs.unity3d.com/Packages/com.unity.testtools.codecoverage@0.2/manual/index.html Ich nutze das tatsächlich gerne, würde aber auch die abdeckung für mich in Azure sichtbar machen. Sprich den Report importieren. Leider weiß ich nichtmal auf was der report basiert. Hat da jemand eine Idee?
  2. Ich möchte ein Dropdown während der Laufzeit mit Werten befüllen. Zum Beispiel mit Schiffsnamen, die der Spieler gebaut hat. Das befüllen klappt über die AddOptions und einer String liste wunderbar. Wo ich allerdings nicht weiterkomme ist, das ich einen Value vom Dropdown zurückbekommen möchte, in meinem Fall die ID des Schiffes da diese für mich eindeutig ist. ShipDropdown.AddOptions(new List<string> { obj.GetComponent<Ship>().name + " Schiff" } );
  3. Beim einrichten einer neuen BuildPipeline für Unity auf Azure bin ich jetzt über einen etwas seltsames Warning gestolpert was mir so gar nichts sagt. Kann damit jemand was anfangen?
  4. Danke das hat die Lösung gebracht
  5. Das kann ich allerdings wiederlegen denn innerhalb meiner Tests deklariere ich das ausschließlich als Member von Methoden.
  6. Technisch kann ich bei Unity in einem Unittest ein leeres GameObject ja sehr einfach erzeugen: GameObject gO = new GameObject(); Jetzt bringt mir Unity allerdings auch die Warnung: Ich stehe jetzt tatsächlich auf den Schlauch wie ich ein leeres GameObject erstellen soll.
  7. Ich habe mal ein kleines Package als Beta geschnürt. Um das Tool im aktuellen Beta zustand nutzen zu können müsst ihr euch erstmal einen Query aussuchen die Ihr abfragen wollt. Der URL Pfad sieht dann z.B. so aus: https://bradleylabs.visualstudio.com/Space Opera Unity/_queries/query/0a19f9f0-0e5f-4486-948c-9bd525c89f38/ Die Daten wären dann: Organisation: BradleyLabs Project: Space%20Opera%20Unity Die QueryID ist der lange Zahlencode nach query/... PAT: Ohne Pat leider keine Anmeldung. Wie man aber daran kommt, hat Microsoft schon geschrieben: https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page Edit: gerade ein Fehler im package bemerkt EDIT: So fehler ist behoben. UnityCallsAzure.unitypackage
  8. Naja die wichtigsten Sachen sind ja drin. Muss meinen Code noch etwas bereinigen und Dan. Denke ich, werde ich eine beta davon in den asset store stellen. Edit mal Icons für die Tickets ergänzt.
  9. Wieder ein kleiner Fortschritt beim Anlegen der Tickets. DAs Linke ist die Basis eines Bugs, das Rechte eine UserStory. Ich denke, ich werde da noch etwas mit Farbe oder Symbolen arbeiten damit Sie auf den Erstem Blick unterscheidbar sind. Ausserdem bekomme ich von Azure Devops tatsächlich HTML texte zurück für die Felder was mich dann doch etwas überrascht hat. Die Hauptmaske wurde jetzt in so weit erweitert, dass die Tickets nur einmal geöffnet werden bzw. beim nochmaligen öffnen einfach wieder in den Focus gesetzt werden.
  10. Die notwendigen Daten wie Organisation, Projekt, Query ID und PAT lassen sich jetzt funktional eingeben und auch speichern. Bisher ist es so gelöst das alle 4 Felder als XML (De)Serialisiert werden. Die Entsprechende XML liegt als File im Ordner von des PlugIns. Im Moment ist der Pfad noch Hardcodiert also Application.dataPath + "/UnityCallsAzure/config.xml" das funktioniert exakt so lange wie das nicht verschoben wird. Das PAT im Klartext zu speichern macht mir tatsächlich ein wenig Bauschmerzen. Als nächstes gehts mal an die Detailansicht der Workitems ran.
  11. Aus einer Idee heraus, entsteht gerade ein kleines PlugIn das es mir ermöglicht die Workitems eines Query direkt via REST API von Azure Devops abzufragen. Das Ganze ist noch so was wie eine Machbarkeitsstudie. Immerhin funktioniert das Abfragen einer Query und das Anzeigen der verschiedenen Tickekts innerhalb von Unity bereits. Ich möchte diesen kleinen Prototyp soweit ausbauen das man sich eine beliebige Work Item Query abfragen kann, die Items in der Listenform angezeigt werden und weitere Informationen wie Description, Comments etc. als zusätzliches Fenster geöffnet werden können. Wenn das soweit steht ist der nächste Schritt, Änderungen an den Tickets wieder auf den Azure Devops Server zurück zu spielen.
  12. Erstmal danke an dich Sascha. Ich bin jetzt mal ein Schritt weiter gekommen: public class ToolTipWindow_Test : MonoBehaviour { private GameObject toolTip; [SetUp] public void Setup() { toolTip = new GameObject("Panel_ToolTip"); toolTip.gameObject.AddComponent<ToolTipText>(); //toolTip.GetComponent<ToolTipText>().Start(); toolTip.GetComponent<ToolTipText>().toolTipText = gameObject.AddComponent<Text>(); toolTip.GetComponent<ToolTipText>().toolTipPanel = new GameObject("Panel"); } [Test] public void CheckTextInTooltip_False() { bool result = false; result = toolTip.GetComponent<ToolTipText>().ToolTipTextInputCheck(""); Assert.IsFalse(result); } [Test] public void CheckTextInTooltip_True() { bool result = false; result = toolTip.GetComponent<ToolTipText>().ToolTipTextInputCheck("TEST"); Assert.IsTrue(result); } [TearDown] public void Teardown() { Object.DestroyImmediate(toolTip); } } Einziges Problem, das ich noch habe ist folgender Abschnitt: toolTip.GetComponent<ToolTipText>().toolTipText = gameObject.AddComponent<Text>(); Lagere ich das ganze in eine Funktion aus welche in der zu testenden Klasse ist, und rufe die Funktion im Setup auf, habe ich kein Problem mehr. Ich wollte das ganze allerdings auch das ganze in der TestSetup machen.
  13. Noch Banaler kann sein das man erst mal in Visual Studio speichern muss damit Unity anfängt zu denken.
  14. Tatsächlich ist Sie eine. using System.Collections; using System.Collections.Generic; using NUnit.Framework; using UnityEngine; using UnityEngine.TestTools; namespace Tests { public class ToolTipWindow_Test : MonoBehaviour { [Test] public void CheckTextInTooltip() { bool result = false; ToolTipText toolTip = gameObject.AddComponent(typeof(ToolTipText)) as ToolTipText; result = toolTip.ToolTipTextInputCheck(""); Assert.IsFalse(result); } } }
  15. Tatsächlich fliegt der Fehler schon bei: ToolTipText toolTip = gameObject.AddComponent(typeof(ToolTipText)) as ToolTipText; Der genau Fehlertext: Ich hänge mal die Entsprechende (noch schlampig aussehende) Klasse an. using UnityEngine; using UnityEngine.UI; public class ToolTipText : MonoBehaviour { [Header("Einstellungen")] [Tooltip("Zeit in Sekunden bis das Tooltip erscheint")] [Range(0.0f, 5.0f)] public float targetTime = 1.5f; [Tooltip("Gibt an ob das Tooltip per Default Aktiv ist")] public bool ToolTipAktiv = true; [Tooltip("Gibt an ob das Tooltip aktuell aktiv ist oder nicht")] public bool ToolTipVisible = false; [Header("Zuweisungen")] public Text toolTipText; public GameObject toolTipPanel; [SerializeField] private float deltaTimer = 0.0f; Vector3 MousCordOffset = new Vector3(0, 0, 0); private void Start() { } public void ToolTip(string Text) { toolTipText.text = Text; } public void Update() { if (ToolTipAktiv) { ToolTipVisible = ToolTipTextInputCheck(toolTipText.text); toolTipPanel.gameObject.transform.position = ShowToolTip(ToolTipVisible); Debug.Log(toolTipPanel.gameObject.transform.position); //if (!ToolTipVisible) //{ // deltaTimer -= Time.deltaTime; // if (deltaTimer <= 0.0f) // { // ToolTipVisible = true; // } //} //else //{ // MousCordOffset.x = Input.mousePosition.x + 20; // MousCordOffset.y = Input.mousePosition.y + 00; // toolTipPanel.gameObject.transform.position = MousCordOffset; //} } } /// <summary> /// In abhängigkeit vom Text wird True oder False zurück gegeben /// </summary> /// <param name="text">Text kommt vom tooltip.text</param> /// <returns>Ist text leer, wird False zurück gegeben. Sonst True</returns> public bool ToolTipTextInputCheck(string text) { if (text.Length == 0 || text == null) { toolTipPanel.gameObject.transform.position = new Vector3(-500, -500, 0); deltaTimer = targetTime; return false; } return true; } private Vector3 ShowToolTip(bool toolTipVisible) { if (!toolTipVisible) { deltaTimer -= Time.deltaTime; if (deltaTimer <= 0.0f) { ToolTipVisible = true; } return new Vector3(-500, -500, 0); } else { MousCordOffset.x = Input.mousePosition.x + 20; MousCordOffset.y = Input.mousePosition.y + 00; return MousCordOffset; } } }
×
×
  • Create New...