Debug och gizmos

BÄde Debug och Gizmos anvÀnds framför allt av spelutvecklare sjÀlva för att fÄ syn pÄ saker under spel. Kanske vill man rita ut nÄgot extra tydligt som inte syns för spelarna, kanske vill man bara ta reda pÄ vilket vÀrde en variabel har under körningen och hur det vÀrdet Àndras.

Debug

Debug.Log()

AnvÀnds för att skriva ut saker till konsollen; motsvarande Console.WriteLine i vanlig C#-konsollprogrammering.

Debug.Log($"Current X: {transform.position.x}");

AnvÀnds ofta för att testa ifall kod överhuvudtaget körs eller för att se vilket vÀrde olika variabler har.

Debug.DrawLine()

Ritar ut en linje i scenvyn. Tar emot tvÄ vektorer som startposition och slutposition för linjen, och en fÀrg. Om man vill kan man ocksÄ ange ett antal sekunder som man vill att linjen ska dröja sig kvar.

Debug.DrawLine(Vector2.right, Vector2.down, Color.green);

Gizmos

Gizmos Àr ett annat, mer flexibelt sÀtt att rita saker i scenvyn.

OnDrawGizmos()

Gizmos ritas i en egen metod – OnDrawGizmos. Precis som andra metoder med namn pĂ„ On
 sĂ„ anropas OnDrawGizmos alltid vid ett förbestĂ€mt tillfĂ€lle; i det hĂ€r fallet nĂ€r Unity-UIt uppdateras. Det gör ocksĂ„ att man bör vara försiktig – skriver man kod i OnDrawGizmos som fastnar i en loop sĂ„ finns risk att hela Unity blockeras.

  void OnDrawGizmos()
  {
    Gizmos.color = Color.green;
    Gizmos.DrawLine(Vector3.right, Vector3.down);
  }

NÀr man ritar gizmos bestÀms fÀrgen inte genom parametrar in i metoderna utan genom att man bestÀmmer vilken förg som ska anvÀndas "frÄn och med nu".

DrawLine()

Fungerar som Debug.DrawLine; man anger tvÄ vektorer.

void OnDrawGizmos()
{
  Gizmos.color = Color.green;
  Gizmos.DrawLine(
    new Vector3(1,2), 
    new Vector3(2,1));
  Gizmos.DrawLine(
    new Vector3(2,1),
    new Vector3(2,2)
  );
}

DrawLineList()

Ritar ut linjer mellan en serie vektorer. Tar emot en lista eller en array av vektorer.

Gizmos.color = Color.green;
Vector3[] points = new Vector3[4]
  {
    new Vector3(-1, 0, 0),
    new Vector3(1, 0, 0),
    new Vector3(-1, 1, 0),
    new Vector3(1, 1, 0)
  };

Gizmos.DrawLineList(points);

DrawWireCube()

Ritar ut en kub. Tar emot tvÄ vektorer, som bestÀmmer kubens position och storlek i x, y oxch z-led.

void OnDrawGizmos()
{
  Gizmos.DrawWireCube(Vector3.zero, Vector3.one);
}

DrawWireSphere()

Ritar ut ett klot (egentligen tre cirklar lÀngs olika axlar). Tar emot en vektor (mittpunkt) och en float som anger radien.

void OnDrawGizmos()
{
  Gizmos.DrawWireSphere(Vector3.zero, 1);
}

Last updated