我试图制作游戏,但这发生了

I tried to make a game but this happened

from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController

class Box(Button):
    def __init__(block='grass.obj',texture='grasstex.png',pose:tuple=(0,0,0)):
        super().__init__(model=block,texture=texture, collider='mesh',position=pose)

app=Ursina()
tp=50
for x in range(tp):
    for z in range(tp):
        Box(pose=(x,0,z))

player=FirstPersonController()
player.z=player.x=0
Sky()
app.run()

它给了我这个错误:

断言失败:在 panda/src/pgraph/nodePath.cxx 的第 407 行重新设置父级 断言失败:检测到在场景图中创建循环的尝试:ui_render/ui_camera/ui/box:c:\buildslave\sdk-windows-amd64\build\panda\src\pgraph\pandaNode.cxx

行 2637 处的 PandaNode 框

我该怎么办?

您在 Block 构造函数中忘记了 self 参数:

class Box(Button):
    def __init__(self, block='grass.obj', texture='grass', pose:tuple=(0,0,0)):
        super().__init__(
            parent=scene,
            model=block,
            texture=texture, 
            collider='mesh',
            position=pose)

Python 对象中的每个方法都将接收其实例作为第一个参数。我还必须明确分配 parent=scene,否则盒子会连接到相机 UI,即使文档另有说明。