如何在 Unity 动作闭包中访问 gameObject [duplicate]

how to access gameObject in a unity action closure [duplicate]

提问人:Maifee Ul Asad 提问时间:6/3/2021 最后编辑:Barış Can YılmazMaifee Ul Asad 更新时间:6/3/2021 访问量:163

问:

在Unity中,我有这段代码:

var go = gameObject;
var some=123;
Debug.Log(go);
socket.On("login", _ => {
    Debug.Log("1");
    Debug.Log(some);
    Debug.Log(go);
    Debug.Log("2");
});

只是我想访问变量 go,但由于它超出了游戏对象的闭包和类型,因此无法访问它。

在控制台中:

HomeObject
1
123

但是调用该 HomeObject 后的所有内容都会消失。

如何在闭包中访问我自己的类/gameObject?

C# .NET Unity-Game-Engine 闭包

评论


答:

0赞 Siarhei Yakushevich 6/3/2021 #1

将该对象保留在层次结构的上方。

如果我没记错的话,您的游戏对象在从套接字回调之前被销毁了。

您可以通过登录来检查:

....

socket.On("login", _ => {
            Debug.Log("Socket callback");
        });

void OnDestroy()
    {
        Debug.Log("Called before than send callback");
        //if destroyed you can't access `gameObject`
        //keep the object above in the calling hierarchy, or cancel request.
    }