AgoraIO-Community / Agora-Unity-RTM-SDK

A Unity3D sample app to show Login /Logout, Log in to/out of channel, Get Channel Member Count, Send/Receive Channel Message, Send Peer Message, Query Member, and token Authentication
24 stars 15 forks source link

不释放RTMClient导致Unity无响应 #18

Closed DoraemonEXA closed 3 years ago

DoraemonEXA commented 3 years ago

Unity版本: 2019.4.18f1c1 SDK版本: v1.4.2.301.1

第一次RTMClient Login成功后, 如果没有主动释放RtmClient而是点击play退出游戏运行, 则会导致之后运行或者编译代码的时候, Unity Editor无响应.

zhangtao1104 commented 3 years ago

这是预期中的,因为 UnityEditor 自身的资源释放时机,导致非托管资源与托管资源之间释放内存时序需要控制,否则就会出现释放时机不一致,导致非法访问。

    void OnApplicationQuit()
    {
        if (channel != null)
        {
            channel.Dispose();
            channel = null;
        }
        if (rtmClient != null)
        {
            rtmClient.Dispose();
            rtmClient = null;
        }
    }

参考下 Demo ,在 OnApplicationQuit 主动去释放资源就能解决问题了。

DoraemonEXA commented 3 years ago

感谢回复, 已经解决问题. 同时希望文档能加上提示或者警告字眼.

zhangtao1104 commented 3 years ago

好的。