C Sharp – die besten Beiträge

Warum endet die Schleife nicht?

Hallo an Alle!

Ich versuch mich im Moment in Unity da ich großes Interesse am Spiele Entwickeln habe.

Mein Unity Editor hängt sich die ganze Zeit auf, wenn ich eine while-Schleife einbaue. Ich vermute mal, dass die while-Schleife nie endet und sich daher Unity aufhängt.

Was denkt ihr?

Hier noch mein Script-Code:

using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UIElements;


public class Movement : MonoBehaviour
{
    public LayerMask ground;
    public float jumpforce = 8f;
    public float accel = 8f;
    public float maxSpeed;
    public bool isGroundTouched = false;
    public Rigidbody2D rb;


    public void Update()
    {


        if (GetComponent<Collider2D>().IsTouchingLayers(ground))
        {
            isGroundTouched = true;
        }
        else{


            isGroundTouched = false;
        }


        if (Input.GetKeyDown(KeyCode.R))
        {
            Jump();
        }


        if (Input.GetKey(KeyCode.D))
        {
            Move(accel);
        }
        else
        {
            while (rb.linearVelocity.magnitude > 0)
            {
                Move(-accel);
            }
        }
        
        if (Input.GetKey(KeyCode.A))
        {
            Move(-accel);
        }
        else
        {
            while (rb.linearVelocity.magnitude > 0)
            {
                Move(accel);
            }
        }
    }
    void FixedUpdate()
    {
        if (rb.linearVelocity.magnitude > maxSpeed)
        {
            rb.linearVelocity = rb.linearVelocity.normalized * maxSpeed;
        }
    }
    public void Move(float direction)
    {
            rb.AddForce(new Vector2(direction, 0));
    }
    public void Jump()
    {
        if (isGroundTouched)
        {
            rb.AddForce(new Vector2(rb.linearVelocity.x, jumpforce));
        }
    }
}

PS. Ich habe nicht viel Erfahrung mit C# doch mit ein paar anderen Programmiersprachen schon. Vor allem mit Objekt-Orientierten habe ich nicht viel Erfahrung.

C Sharp, Unity2D

Frage zu c# bzw. #script?

Kennt sich jemand mit #script aus?

Ich habe folgendes Skript:

 "Script/DeviceTemplate": {
        "Content": "{{var assignments = []}}
{{var nodeId = ServiceTask.DeviceInstallationServiceTask.Details.NodeId}}
{{#each groupName in Typicals.DeviceTypes.xxx.DeviceTypicals[ServiceTask.DeviceInstallationServiceTask.Details.Typical.Name].SignalGroups}}
{{var index = 0}}
{{#each signal in Typicals.DeviceTypes.xxx.SignalGroups[groupName].SignalList}}
{{var baseComponent = ServiceTask.DeviceInstallationServiceTask.Details.Typical.SignalAssignments[groupName].BaseComponent}}
{{var _ = assignments.push({
    "assignmentIndex": index,
	"deviceId": "" + nodeId,
    "sparkplugName": baseComponent + signal.MetricBaseName
})}}
{{index = index + 1}}
{{/each}}
{{/each}}
{{ {
  "system": {
    "deviceName": nodeId
  },
  "apps": [
    {
      "appName": "SPARKPLUG",
      "appId": 12345,
      "settings": {
                "clientId": nodeId,
                "keepAliveInterval": 120,
                "publishInterval": 120,
                "startupDelay": 50
      },	 
      "sparkplugSettings": {
            "mqttTopic": "spBv1.0",
            "sparkplugTopic": "NTN/{MessageType}/" + nodeId
      },
      "assignments": assignments
    }
  ]
} |> json}}"
      }

Dieses hat zwei Schleifen, in der inneren Schleife soll die Variable index um 1 erhöht werden. Alles funktioniert, nur bekomme ich in der Ausgabe für jeden Aufruf von

index = index + 1

ebenfalls eine Ausgabe:

     1
     2
     3
     4
     5
     6
     7
     8
     9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
   {"system":{"deviceName......

Wie kann ich die Ausgabe von 1 bis 23 unterdrücken?

Software, IT, programmieren, C Sharp, Code, Programmiersprache, Script, Softwareentwicklung

Meistgelesene Beiträge zum Thema C Sharp