Ein Array von Actoren sortieren?

  • Hi Jungens, ich habe also ein Array voll von Actoren.


    Wenn ein Actor davon stirbt, wird er zum Nullpointer.


    Kann ich also das Array irgendwie sortieren, dass die gefüllten Elemente im Array nach vorne geschoben werden und die Nullpointer Elemente nach hintern. So dass wenn ich das Array Element [0] aufrufe, immer ein gefüllter Actor drin ist?


    Bin mit Arrays noch nicht so fit, kann man das machen?

  • evtl ist dies der Code dafür. Stimmt das?


    Code
    ArrayName.Sort();


    Beim rumprobieren ist mir aufgefallen, dass mein Projekt öfter abstürzt.


    Zweite Frage also, wie stelle ich sicher, dass ein Array mindestens ein valides Element noch inne hat?


    bei einzlenen Pointern macht man das ja so


    if (PointerName)

    {

    }


    wie macht man das bei Arrays voller Actoren?


    Danke schonmal.

  • Phoenix-100 , danke für deine Antwort, ich versteh deinen Code leider nicht und mein Problem besteht immer noch, kannst du vllt das mit meinem bisherigen Code erklären, dieser Crasht auch, obwohl ich nach validen Pointern filtere.


    Ich nehme doch aus meinem Array "MeineMinions" jedes Element heraus mit einer for-Schleife und prüfe es mit "if (MeineMinions[i])", wieso kann es dann noch crashen?


    Code
    if (MeineMinions.Num() > 0 && Minion && Minion->AIController_Minion)
    {
        for (int32 i = 0; i < MeineMinions.Num(); i++)
        {
            if (MeineMinions[i])
            {
                MeineMinions[i]->AIController_Minion->GetBlackboardComponent()->SetValueAsObject("Spieler", this);
            }
        }
    }
    • Hilfreich

    Hallo


    Mein Code entfernt die nullptr aus dem Array. Also behält nur Elemente bei denen das true ist.

    Code
    return A1 != nullptr;

    Dein nullptr ist vermutlich entweder AIController_Minion oder GetBlackboardComponent().

    Die prüfst du beide nicht. Mit ensure und check findest du diese Probleme einfacher, und sonst einfach mit dem debugger.


    Code
     MeineMinions[i]->AIController_Minion->GetBlackboardComponent()->SetValueAsObject("Spieler", this);


    Gruss