添加tickactor,没成功

This commit is contained in:
2025-02-12 00:13:16 +08:00
parent 1e0c4b8d8c
commit a9e87c74bb
6 changed files with 132 additions and 21 deletions
+35
View File
@@ -1,4 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const UE = require("ue");
const puerts_1 = require("puerts");
// 创建一个用于Tick的Actor
class TSTickActor extends UE.Actor {
constructor() {
super(...arguments);
this.lastPrintTime = 0;
}
ReceiveTick(DeltaSeconds) {
super.ReceiveTick(DeltaSeconds);
// 每秒打印一次
this.lastPrintTime += DeltaSeconds;
if (this.lastPrintTime >= 1.0) {
console.log('Tick: ' + this.lastPrintTime.toFixed(2));
this.lastPrintTime = 0;
}
}
// 确保Actor可以Tick
ReceiveBeginPlay() {
super.ReceiveBeginPlay();
this.PrimaryActorTick.bCanEverTick = true;
}
}
console.log('--------------------------entry.ts started2----------------------');
// 获取游戏实例和世界
let gameInstance = puerts_1.argv.getByName("GameInstance");
let world = gameInstance.GetWorld();
// 在场景中生成TSTickActor
let spawnLocation = new UE.Vector(0, 0, 100); // 在高度100的位置生成,避免卡在地面
let spawnRotation = new UE.Rotator(0, 0, 0);
let spawnTransform = new UE.Transform();
spawnTransform.SetLocation(spawnLocation);
spawnTransform.SetRotation(spawnRotation.Quaternion());
let tickActor = UE.GameplayStatics.BeginDeferredActorSpawnFromClass(world, TSTickActor.StaticClass(), spawnTransform);
UE.GameplayStatics.FinishSpawningActor(tickActor, spawnTransform);
console.log('--------------------------TSTickActor spawned----------------------');
//# sourceMappingURL=entry.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../TypeScript/entry.ts"],"names":[],"mappings":";;AAGA,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA"}
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../TypeScript/entry.ts"],"names":[],"mappings":";;AAAA,yBAAwB;AACxB,mCAAuC;AAEvC,mBAAmB;AACnB,MAAM,WAAY,SAAQ,EAAE,CAAC,KAAK;IAAlC;;QACY,kBAAa,GAAW,CAAC,CAAC;IAkBtC,CAAC;IAhBG,WAAW,CAAC,YAAoB;QAC5B,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAEhC,SAAS;QACT,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC;QACnC,IAAI,IAAI,CAAC,aAAa,IAAI,GAAG,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;SAC1B;IACL,CAAC;IAED,gBAAgB;IAChB,gBAAgB;QACZ,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC;IAC9C,CAAC;CACJ;AAED,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA;AAEhF,YAAY;AACZ,IAAI,YAAY,GAAI,aAAI,CAAC,SAAS,CAAC,cAAc,CAAqB,CAAA;AACtE,IAAI,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;AAEpC,oBAAoB;AACpB,IAAI,aAAa,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB;AACnE,IAAI,aAAa,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,IAAI,cAAc,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;AACxC,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC1C,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;AAEvD,IAAI,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC,gCAAgC,CAC/D,KAAK,EACL,WAAW,CAAC,WAAW,EAAE,EACzB,cAAc,CACF,CAAC;AACjB,EAAE,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAElE,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAA"}
+14
View File
@@ -0,0 +1,14 @@
#include "TSUserWidget.h"
void UTSUserWidget::SetTypeScriptTickFunction(FString FunctionName)
{
TSTickFunctionName = FunctionName;
}
void UTSUserWidget::NativeTick(const FGeometry& MyGeometry, float InDeltaTime)
{
Super::NativeTick(MyGeometry, InDeltaTime);
// 这里可以调用TypeScript中注册的Tick函数
// 具体实现方式需要根据您的Puerts配置来调用
}
+20
View File
@@ -0,0 +1,20 @@
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "TSUserWidget.generated.h"
UCLASS()
class MINGSIMULATOR_API UTSUserWidget : public UUserWidget
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "TypeScript")
void SetTypeScriptTickFunction(FString FunctionName);
virtual void NativeTick(const FGeometry& MyGeometry, float InDeltaTime) override;
private:
FString TSTickFunctionName;
};
+43 -1
View File
@@ -1,4 +1,46 @@
import * as UE from 'ue'
import {argv, blueprint} from 'puerts';
console.log('--------------------------entry.ts started2----------------------')
// 创建一个用于Tick的Actor
class TSTickActor extends UE.Actor {
private lastPrintTime: number = 0;
ReceiveTick(DeltaSeconds: number): void {
super.ReceiveTick(DeltaSeconds);
// 每秒打印一次
this.lastPrintTime += DeltaSeconds;
if (this.lastPrintTime >= 1.0) {
console.log('Tick: ' + this.lastPrintTime.toFixed(2));
this.lastPrintTime = 0;
}
}
// 确保Actor可以Tick
ReceiveBeginPlay(): void {
super.ReceiveBeginPlay();
this.PrimaryActorTick.bCanEverTick = true;
}
}
console.log('--------------------------entry.ts started2----------------------')
// 获取游戏实例和世界
let gameInstance = (argv.getByName("GameInstance") as UE.GameInstance)
let world = gameInstance.GetWorld();
// 在场景中生成TSTickActor
let spawnLocation = new UE.Vector(0, 0, 100); // 在高度100的位置生成,避免卡在地面
let spawnRotation = new UE.Rotator(0, 0, 0);
let spawnTransform = new UE.Transform();
spawnTransform.SetLocation(spawnLocation);
spawnTransform.SetRotation(spawnRotation.Quaternion());
let tickActor = UE.GameplayStatics.BeginDeferredActorSpawnFromClass(
world,
TSTickActor.StaticClass(),
spawnTransform
) as TSTickActor;
UE.GameplayStatics.FinishSpawningActor(tickActor, spawnTransform);
console.log('--------------------------TSTickActor spawned----------------------')
+19 -19
View File
@@ -1,9 +1,13 @@
{
"D:/MiceCola/Projects/AncientCivil/TypeScript/entry.ts": {
"version": "fdcb7aa1d16b12d6171a4020b7624560",
"version": "b1cd767eea65f4ecc585ee93cd754dda",
"processed": true,
"isBP": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/cpp/index.d.ts": {
"version": "dd956b7a3c07de56359cbfa4bee0cf05",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/ffi/index.d.ts": {
"version": "a371a5609d4ee418c7557ae5aa47afae",
"processed": false
@@ -12,6 +16,14 @@
"version": "d50bfedc76d792b10b1643a43a4ffd6b",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/react-umg/index.d.ts": {
"version": "646f0cb810568f8eab5ba1f09cc88037",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/node_modules/@types/react/index.d.ts": {
"version": "a6386c71ac7ef6d48c8d05574cce1c20",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/ue/index.d.ts": {
"version": "b982801b3faba925e1d56c2d2cebd82a",
"processed": false
@@ -20,12 +32,16 @@
"version": "b35c41fa7a5a7a2cde1b14a2577628f7",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/ue/ue.d.ts": {
"version": "ec461a2d572a9672fb5da0a67b629ca9",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/ue/puerts_decorators.d.ts": {
"version": "11c14fe8093e3773ebdc2c6b8a509977",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/node_modules/@types/react/index.d.ts": {
"version": "a6386c71ac7ef6d48c8d05574cce1c20",
"D:/MiceCola/Projects/AncientCivil/Typing/ue/ue_bp.d.ts": {
"version": "8a4adfd291c2689f547a023a91753059",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/node_modules/@types/react-reconciler/index.d.ts": {
@@ -259,21 +275,5 @@
"D:/MiceCola/Projects/AncientCivil/Content/JavaScript/PuertsEditor/node_modules/typescript/lib/lib.dom.iterable.d.ts": {
"version": "977f6792324dbfc2fcc8eadc6f1b0452",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/cpp/index.d.ts": {
"version": "dd956b7a3c07de56359cbfa4bee0cf05",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/react-umg/index.d.ts": {
"version": "646f0cb810568f8eab5ba1f09cc88037",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/ue/ue.d.ts": {
"version": "ec461a2d572a9672fb5da0a67b629ca9",
"processed": false
},
"D:/MiceCola/Projects/AncientCivil/Typing/ue/ue_bp.d.ts": {
"version": "8a4adfd291c2689f547a023a91753059",
"processed": false
}
}