我希望能够在我的程序看到 CC.TriggeredEvent 后在广告牌设备上显示文本,但是在订阅类型 ?agent->void 时似乎出现问题。有什么解决办法吗?
CC.TriggeredEvent.Subscribe(OnTriggeredEvent)
返回错误:
This function parameter expects a value of type ?agent->void, but this argument is an incompatible value of type type{_(:agent)<suspends>:void}.
代码:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# See https://dev.epicgames.com/documentation/en-us/uefn/create-your-own-device-in-verse for how to create a verse device.
# A Verse-authored creative device that can be placed in a level
MapLoader := class(creative_device):
@editable
CC:trigger_device = trigger_device{}
@editable
MapText:billboard_device = billboard_device{}
@editable
DifficultyText:billboard_device = billboard_device{}
var initseconds : int = 0
@editable
StartTimer:billboard_device = billboard_device{}
@editable
RNG:rng_device = rng_device{}
@editable
InitTimerInit:trigger_device = trigger_device{}
StringToMessage<localizes>(value:string)<computes> : message = "{value}"
OnBegin<override>()<suspends>:void=
Print("Script started")
MapText.SetText(StringToMessage("Waiting for player(s).."))
DifficultyText.SetText(StringToMessage(" "))
StartTimer.SetText(StringToMessage("{initseconds}s"))
Print("Defaults set")
InitTimerInit.TriggeredEvent.Await()
Print("I saw a TriggeredEvent")
set initseconds = 10
Print("initseconds set")
loop:
if (initseconds > 0):
set initseconds = initseconds - 1
Sleep(1.0)
StartTimer.SetText(StringToMessage("{initseconds}s"))
Print("{initseconds}")
else:
StartTimer.SetText(StringToMessage("{initseconds}s"))
Print("Done")
RNG.Activate()
CC.TriggeredEvent.Subscribe(OnTriggeredEvent)
break
OnTriggeredEvent<private>(Agent:agent)<suspends>:void=
MapText.SetText(StringToMessage("Castaway Castles"))
DifficultyText.SetText(StringToMessage("EASY"))
您正在订阅一个具有导致该错误的效果说明符的函数。创建一个使用spawn{}表达式来调用OnTriggerEvent的新函数。例如:
CC.TriggeredEvent.Subscribe(Start_OnTriggeredEvent)
Start_OnTriggeredEvent(a:agent) : void = spawn{OnTriggeredEvent()}