gpt4 book ai didi

c# - 有没有什么好的方法可以在 Unity 中使用事件?

转载 作者:太空狗 更新时间:2023-10-29 21:46:31 26 4
gpt4 key购买 nike

programAction = UnityContainer.Resolve<LoaderDriver>();
(programAction as LoaderDriver).LoadComplete +=
new EventHandler(Program_LoadComplete);

是否有一种配置可以让我解决我的对象已经连接到事件的问题?

或者,是否有更好的方法来实现相同的结果?我注意到,有时当我看不到“特征”时,这是因为我不知道的模式是首选。

最佳答案

是的,有办法。您必须编写一个扩展,将自定义 BuilderStrategy 添加到 Unity BuildPipeline 的 PostInitialization 阶段。

扩展和策略的代码应该类似于这样:

public class SubscriptionExtension : UnityContainerExtension
{
protected override void Initialize()
{
var strategy = new SubscriptionStrategy();
Context.Strategies.Add(strategy, UnityBuildStage.PostInitialization);
}
}
public class SubscriptionStrategy : BuilderStrategy
{
public override void PostBuildUp(IBuilderContext context)
{
if (context.Existing != null)
{
LoaderDriver ld = context.Existing as LoaderDriver;
if(ld != null)
{
ld.LoadComplete += Program_LoadComplete;
}
}
}
}

然后将扩展添加到容器

container.AddNewExtension<SubscriptionExtension>();

当您解析 LoaderDriver 实例时,它会自动订阅 EventHandler。

您可以在 TecX 中找到一个将类订阅到 EventAggregator 的工作示例项目。源代码位于 TecX.Event.Unity 项目中。

关于c# - 有没有什么好的方法可以在 Unity 中使用事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8539811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com