Python中的委托与unity结合使用

本文关键字:unity 结合 Python | 更新日期: 2023-09-27 18:12:47

我有一些来自Unity3D教程的c#代码片段

AddListener(delegate {print(i);}

我想在python中这样做,我需要一个容器来传递I来打印,但是Unity不接受部分

TypeError: expected UnityAction, got partial

请帮帮我

AddListener(Lambda i: print(i))

应该可以工作,但不知何故,我没有设法拼写正确的函数,我总是得到:

()只接受1个参数(给定0)

使用IronPython和普通python。

这里是我想要做的一个更大的概要:

browser(enter=holderdict,itemy=0,*a):
    for item in enter["template"]:
        kgo = GameObject()
        kgo.AddComponent[RectTransform]()
        kgo.name=str(item)
        butn = kgo.AddComponent[Button]()
        butn.onClick.AddListener(lambda butn: browser(item))

好的,我解决了这个问题,到目前为止,问题不是在Lambda,而是在我如何调用浏览器这是正确的:

butn.onClick.AddListener(lambda butn: browser(holderdict[item]))

,但我仍然有一个问题:Lambda不保护它应该在循环中传递的项目,而只是传递循环的最后一个。有什么建议吗?

Python中的委托与unity结合使用

好了,我终于设法让Lambda工作了:

butn.onClick.AddListener(lambda item=item: dicbrowser(holderdict[item],0))