Erstelle INT und BOOL Matrizen in der Unreal Engine 5
Nutze DataMatrix in der Unreal Engine 5 um deine eigene Matrix Variable zu erstellen. Egal ob 2-, 3-Dimensional oder anderes, speichere deine BOOL oder INT Variablen als Matrix.
Beschreibung
Das DataMatrix-Plugin für Unreal Engine ermöglicht die effiziente Verwaltung und Verarbeitung mehrdimensionaler Matrizen (int32
und bool
). Es bietet umfassende Unterstützung für Blueprints, C++ und DataTables, sowie Multi-Threading-Funktionen zur Leistungsoptimierung bei großen Datenmengen.
- Einfache Matrizen in der Unreal Enigne 5
- Für BOOL und INT Variablen
- C++-Integration, nutzbar mit C++
- 1-, 2-, 3-, 4-D Matrizen und mehr
- Einfach mit Blueprints nutzbar
DataMatrix: Showcase
Nutze mehrdimensionale Matrizen in Unreal Engine direkt über Blueprint-Nodes oder C++-Funktionen. Das DataMatrix-Plugin ist ideal für Projekte auf Windows, macOS und Linux und bietet effiziente Verwaltung großer Datenmengen sowie einfache Integration. Mit Unterstützung für DataTables und Multi-Threading ermöglicht DataMatrix flexible und performante Datenstrukturen. Dank umfassender Dokumentation und benutzerfreundlicher Blueprints ist der Einstieg sowohl für Anfänger als auch für erfahrene Entwickler mühelos möglich.
Dokumentation & News
Table of Contents
Installation und Einrichtung (für Source)
Projektdateien neu generieren: Rechtsklicke auf die
.uproject
-Datei und wähle „Generate Visual Studio project files“ (oder das entsprechende Tool für deine IDE).Projekt kompilieren: Öffne dein Projekt in Unreal Engine. Der Editor sollte das Plugin automatisch erkennen und kompilieren.
Plugin aktivieren: Gehe zu Settings > Plugins, suche nach „DataMatrix“ und stelle sicher, dass es aktiviert ist.
Plugin aktivieren: Gehe zu Edit > Plugins, suche nach „DataMatrix“ und stelle sicher, dass es aktiviert ist.
YourProject/
└── Plugins/
└── DataMatrix/
Datenstrukturen
FDataMatrixInt
FDataMatrixInt
ist eine USTRUCT
, die eine mehrdimensionale Matrix für int32
-Werte repräsentiert.
USTRUCT(BlueprintType)
struct DATAMATRIX_API FDataMatrixInt
{
GENERATED_BODY()
public:
UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
TArray IntMatrix;
UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
TArray Dimensions;
};
FDataMatrixInt
FDataMatrixBool
ist eine USTRUCT
, die eine mehrdimensionale Matrix für bool
-Werte repräsentiert.
USTRUCT(BlueprintType)
struct DATAMATRIX_API FDataMatrixBool
{
GENERATED_BODY()
public:
UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
TArray BoolMatrix;
UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
TArray Dimensions;
};
Verwendung in Blueprints
Initialisierung der Matrix
Synchronisierte Initialisierung
- InitializeMatrixInt / InitializeMatrixBool
- Beschreibung: Initialisiert eine
FDataMatrixInt
oderFDataMatrixBool
Struktur mit den angegebenen Dimensionen. - Eingaben:
- Matrix (Referenz): Die zu initialisierende Matrix.
- In Dimensions (Array von int32): Die Dimensionen der Matrix, z.B.
[2, 2]
für eine 2×2 Matrix.
- Beispiel:
- Erstelle eine Variable
MyMatrix
vom TypFDataMatrixInt
. - Verwende den Node
InitializeMatrixInt
und verbindeMyMatrix
mit demMatrix
-Pin. - Erstelle ein
Make Array
mit[2, 2]
und verbinde es mitIn Dimensions
.
- Erstelle eine Variable
- Beschreibung: Initialisiert eine
Asynchrone Initialisierung mit Multi-Threading
- InitializeMatrixIntAsync / InitializeMatrixBoolAsync
- Beschreibung: Initialisiert eine
FDataMatrixInt
oderFDataMatrixBool
Struktur asynchron und ruft einen Callback auf. - Eingaben:
- Matrix: Die zu initialisierende Matrix.
- In Dimensions (Array von int32): Die Dimensionen der Matrix.
- On Completed (Delegate): Das Event, das nach der Initialisierung aufgerufen wird.
- Beispiel:
- Erstelle eine Variable
MyMatrix
vom TypFDataMatrixInt
. - Verwende den Node
InitializeMatrixIntAsync
und verbindeMyMatrix
,[2, 2]
und ein Custom EventOnInitializeMatrixIntCompleted
.
- Erstelle eine Variable
- Beschreibung: Initialisiert eine
Setzen und Abrufen von Werten
SetValueInt / SetValueBool
- Beschreibung: Setzt einen Wert (
int32
oderbool
) an den angegebenen Indizes. - Eingaben:
- Matrix (Referenz): Die Zielmatrix.
- Indices (Array von int32): Die Position, z.B.
[0, 1]
. - Value: Der zu setzende Wert, z.B.
42
oderTrue
.
- Beispiel:
- Verwende
SetValueInt
, verbindeMyMatrix
,[0, 1]
und den Wert42
.
- Verwende
GetValueInt / GetValueBool
- Beschreibung: Holt einen Wert (
int32
oderbool
) von den angegebenen Indizes. - Eingaben:
- Matrix: Die Quellmatrix.
- Indices (Array von int32): Die Position, z.B.
[0, 1]
.
- Ausgabe:
- Return Value: Der abgerufene Wert, z.B.
42
oderTrue
.
- Return Value: Der abgerufene Wert, z.B.
- Beispiel:
- Verwende
GetValueInt
, verbindeMyMatrix
und[0, 1]
, und verbinde den Return-Wert zu einemPrint String
.
- Verwende
Beispiele: 2x2 und 2x2x2 Matrizen
2×2 Matrix
- Initialisierung:
- Dimensionen:
[2, 2]
- Dimensionen:
- Setzen von Werten:
[0,0] = 1
[0,1] = 2
[1,0] = 3
[1,1] = 4
- Abrufen von Werten:
- Werte von
[0,0]
bis[1,1]
abrufen und anzeigen.
- Werte von
2x2x2 Matrix
- Initialisierung:
- Dimensionen:
[2, 2, 2]
(Layer, Zeilen, Spalten)
- Dimensionen:
- Setzen von Werten:
[0,0,0] = 1
[0,0,1] = 2
[0,1,0] = 3
[0,1,1] = 4
[1,0,0] = 5
[1,0,1] = 6
[1,1,0] = 7
[1,1,1] = 8
- Abrufen von Werten:
- Werte von
[0,0,0]
bis[1,1,1]
abrufen und anzeigen.
- Werte von
Hinweis: Bei einer 2x2x2 Matrix sind die Indizes [Layer, Zeile, Spalte]
relevant, z.B. [1,1,1]
ist die zweite Layer, zweite Zeile, zweite Spalte.
Verwendung in C++
Initialisierung der Matrix
Synchronisierte Initialisierung
1. Header einbinden:
#include "DataMatrixFunctionLibrary.h"
2. Matrix deklarieren und initialisieren:
FDataMatrixInt MyMatrix;
TArray Dimensions = {2, 2};
UDataMatrixFunctionLibrary::InitializeMatrixInt(MyMatrix, Dimensions);
Asynchrone Initialisierung mit Callbacks
1. Callback-Funktion erstellen:
UCLASS()
class YOURPROJECT_API AYourActor : public AActor
{
GENERATED_BODY()
public:
virtual void BeginPlay() override;
UFUNCTION()
void OnInitializeMatrixIntCompleted(FDataMatrixInt Matrix);
};
2. Implementierung der Callback-Funktion:
void AYourActor::OnInitializeMatrixIntCompleted(FDataMatrixInt Matrix)
{
TArray Indices = {1, 0};
UDataMatrixFunctionLibrary::SetValueInt(Matrix, Indices, 42);
int32 Value = UDataMatrixFunctionLibrary::GetValueInt(Matrix, Indices);
UE_LOG(LogTemp, Log, TEXT("Wert an Position [1,0]: %d"), Value);
}
3. Asynchrone Initialisierung starten:
void AYourActor::BeginPlay()
{
Super::BeginPlay();
FDataMatrixInt MyMatrix;
TArray Dimensions = {2, 2};
UDataMatrixFunctionLibrary::InitializeMatrixIntAsync(MyMatrix, Dimensions, FOnInitializeMatrixIntCompleted::CreateUObject(this, &AYourActor::OnInitializeMatrixIntCompleted));
}
Setzen und Abrufen von Werten
Setzen von Werten
TArray Indices = {1, 0};
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, Indices, 42);
Anrufen von Werten
int32 Value = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, Indices);
UE_LOG(LogTemp, Log, TEXT("Wert an Position [1,0]: %d"), Value);
Beispiele: 2x2 und 2x2x2 Matrizen
2×2 Matrix
1. Initialisierung:
FDataMatrixInt MyMatrix;
TArray Dimensions = {2, 2};
UDataMatrixFunctionLibrary::InitializeMatrixInt(MyMatrix, Dimensions);
2. Setzen von Werten:
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, {0, 0}, 1);
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, {0, 1}, 2);
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, {1, 0}, 3);
UDataMatrixFunctionLibrary::SetValueInt(MyMatrix, {1, 1}, 4);
3. Abrufen von Werten:
int32 Value00 = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, {0, 0});
int32 Value01 = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, {0, 1});
int32 Value10 = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, {1, 0});
int32 Value11 = UDataMatrixFunctionLibrary::GetValueInt(MyMatrix, {1, 1});
UE_LOG(LogTemp, Log, TEXT("Wert [0,0]: %d"), Value00);
UE_LOG(LogTemp, Log, TEXT("Wert [0,1]: %d"), Value01);
UE_LOG(LogTemp, Log, TEXT("Wert [1,0]: %d"), Value10);
UE_LOG(LogTemp, Log, TEXT("Wert [1,1]: %d"), Value11);
2x2x2 Matrix
1. Initialisierung:
FDataMatrixInt My3DMatrix;
TArray Dimensions3D = {2, 2, 2};
UDataMatrixFunctionLibrary::InitializeMatrixInt(My3DMatrix, Dimensions3D);
2. Setzen von Werten:
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {0, 0, 0}, 1);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {0, 0, 1}, 2);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {0, 1, 0}, 3);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {0, 1, 1}, 4);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {1, 0, 0}, 5);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {1, 0, 1}, 6);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {1, 1, 0}, 7);
UDataMatrixFunctionLibrary::SetValueInt(My3DMatrix, {1, 1, 1}, 8);
3. Abrufen von Werten:
UE_LOG(LogTemp, Log, TEXT("Wert [0,0,0]: %d"), UDataMatrixFunctionLibrary::GetValueInt(My3DMatrix, {0,0,0}));
UE_LOG(LogTemp, Log, TEXT("Wert [0,0,1]: %d"), UDataMatrixFunctionLibrary::GetValueInt(My3DMatrix, {0,0,1}));
// ... bis [1,1,1]
Verwendung mit DataTables
Erstellen einer DataTable
- 1. Struktur wählen:
- Erstelle eine Struktur kompatibel mit
FDataMatrixInt
oderFDataMatrixBool
, z.B.:
- Erstelle eine Struktur kompatibel mit
USTRUCT(BlueprintType)
struct DATAMATRIX_API FDataMatrixIntStruct
{
GENERATED_BODY()
public:
UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
TArray Dimensions;
UPROPERTY(BlueprintReadWrite, Category = "DataMatrix")
TArray Data;
};
- 2. DataTable erstellen:
- Rechtsklicke im Content Browser und wähle Miscellaneous > DataTable.
- Wähle die erstellte Struktur (
FDataMatrixIntStruct
) aus.
- 3. DataTable benennen und bearbeiten:
- Benenne die DataTable, z.B.
DT_MyDataMatrixInt
. - Füge neue Zeilen hinzu:
- Dimensions:
[2, 2]
für eine 2×2 Matrix. - Data:
[1, 2, 3, 4]
für die Werte.
- Dimensions:
- Benenne die DataTable, z.B.
Initialisieren der Matrix aus einer DataTable
DataTable Row abrufen:
- Verwende den Node „Get Data Table Row“.
- Wähle die DataTable
DT_MyDataMatrixInt
aus. - Gib den Row-Namen ein, z.B.
Row1
.
Struktur aufbrechen:
- Verwende „Break FDataMatrixIntStruct“, um auf Dimensions und Data zuzugreifen.
Matrix initialisieren:
- Verwende den Node „InitializeMatrixWithDataInt“.
- Eingaben:
- Matrix: Deine Matrix-Variable (
MyMatrix
). - In Dimensions: Verbinde mit
Dimensions
aus der DataTable. - In Data: Verbinde mit
Data
aus der DataTable.
- Matrix: Deine Matrix-Variable (
Erklärung der Blueprint Nodes
InitializeMatrixInt
- Beschreibung: Initialisiert eine
FDataMatrixInt
-Struktur mit den angegebenen Dimensionen. - Eingaben:
- Matrix (Referenz): Die zu initialisierende Matrix.
- In Dimensions (Array von int32): Die Dimensionen der Matrix.
- Ausgabe: Keine.
InitializeMatrixWithDataInt
- Beschreibung: Initialisiert eine
FDataMatrixInt
-Struktur mit Dimensionen und vorgegebenen Daten. - Eingaben:
- Matrix (Referenz): Die zu initialisierende Matrix.
- In Dimensions (Array von int32): Die Dimensionen der Matrix.
- In Data (Array von int32): Die Daten für die Matrix.
- Ausgabe: Keine.
SetValueInt
- Beschreibung: Setzt einen
int32
-Wert an den angegebenen Indizes. - Eingaben:
- Matrix (Referenz): Die Matrix, in die der Wert gesetzt werden soll.
- Indices (Array von int32): Die Indizes der Position.
- Value (int32): Der zu setzende Wert.
- Ausgabe: Keine.
GetValueInt
- Beschreibung: Holt einen
int32
-Wert von den angegebenen Indizes. - Eingaben:
- Matrix: Die Matrix, aus der der Wert geholt werden soll.
- Indices (Array von int32): Die Indizes der Position.
- Ausgabe:
- Return Value (int32): Der abgerufene Wert.
ResizeMatrixInt
- Beschreibung: Ändert die Dimensionen einer bestehenden
FDataMatrixInt
-Struktur. - Eingaben:
- Matrix (Referenz): Die zu ändernde Matrix.
- New Dimensions (Array von int32): Die neuen Dimensionen.
- Ausgabe: Keine.
ClearMatrixInt
- Beschreibung: Leert die Matrixdaten und Dimensionen einer
FDataMatrixInt
-Struktur. - Eingaben:
- Matrix (Referenz): Die zu leere Matrix.
- Ausgabe: Keine.
GetDimensionsInt
- Beschreibung: Gibt die Dimensionen einer
FDataMatrixInt
-Struktur zurück. - Eingaben:
- Matrix: Die Matrix, deren Dimensionen abgefragt werden.
- Ausgabe:
- Return Value (Array von int32): Die Dimensionen der Matrix.
GetDimensionsAsStringInt
- Beschreibung: Gibt die Dimensionen einer
FDataMatrixInt
-Struktur als kommagetrennten String zurück. - Eingaben:
- Matrix: Die Matrix, deren Dimensionen abgefragt werden.
- Ausgabe:
- Return Value (String): Die Dimensionen als String, z.B.
"2,2"
.
- Return Value (String): Die Dimensionen als String, z.B.
InitializeMatrixIntAsync
- Beschreibung: Initialisiert eine
FDataMatrixInt
-Struktur asynchron mit den angegebenen Dimensionen und ruft einen Callback auf, wenn die Initialisierung abgeschlossen ist. - Eingaben:
- Matrix: Die Matrix, die initialisiert werden soll.
- In Dimensions (Array von int32): Die Dimensionen der Matrix.
- On Completed (Delegate): Das Event, das nach der Initialisierung aufgerufen wird.
- Ausgabe: Keine.
Für FDataMatrixBool
Die Nodes sind analog zu den FDataMatrixInt
-Versionen, ersetzen jedoch int32
durch bool
.
Troubleshooting & Common Issues
Delegate-Typen nicht unterstützt: Stelle sicher, dass Delegates mit DECLARE_DYNAMIC_DELEGATE_OneParam
deklariert sind und als const&
in den Funktionen übergeben werden.
Kopierfehler bei TArray
: Achte darauf, dass TArray
-Zuweisungen korrekt sind und keine const
-Qualifizierer verletzt werden. Verwende mutable
in Lambda-Funktionen, wenn notwendig.
Compiler-Fehler bei Lambda-Funktionen: Deklariere Lambdas als mutable
, um Änderungen an erfassten Kopien zu ermöglichen.
Thread-Sicherheitsprobleme: Implementiere geeignete Synchronisierungsmechanismen, wenn mehrere Threads auf dieselben Daten zugreifen.
Roadmap
Initial Release.
- Initial release
- BOOL Matrix
- INT Matrix
- Get, Set, Init, Clear, Resize
- 1D, 2D, 3D, 4D, 5D … Matrizen
Keine Einträge.