在 Unity 中完成后退出聊天窗口

Posted

技术标签:

【中文标题】在 Unity 中完成后退出聊天窗口【英文标题】:Exit Chat Window When Finished In Unity 【发布时间】:2021-08-10 16:44:23 【问题描述】:

我正在尝试构建一个界面,以便我可以加载一个聊天窗口 我可以在窗口中阅读的消息。用户按回车,消息索引递增 因此显示下一条消息。显示最后一条消息后 例如lvl 7, event 1 我想关闭窗口。

3个参数分别是level、event、messageindex。

发生的情况是我看不到聊天窗口,也没有消息 显示在窗口中。我该如何修改算法 我阅读了关卡和事件的所有消息,然后 窗口是否正常关闭?

...
Debug.Log("File size is" + sizeoffile);
for (int i = 0; i < sizeoffile; i++)

    if ((storyitemData["storyline"][i]["event"].ToString() == eventno.ToString()) & (storyitemData["storyline"][i]["level"].ToString() == levelno.ToString()) & (storyitemData["storyline"][i]["index"].ToString() == msgindex.ToString()))
    
        Debug.Log("read message was called with message index " + msgindex + " and the content is " + storyitemData["storyline"][i]["content"].ToString());

        //check that this is right
        txtlbl.GetComponent<Text>().text = storyitemData["storyline"][i]["content"].ToString();
     
    else if ((storyitemData["storyline"][i]["event"].ToString() == eventno.ToString()) & (storyitemData["storyline"][i]["level"].ToString() == levelno.ToString()) & (storyitemData["storyline"][i]["index"].ToString() != msgindex.ToString()))
    
        msgindex = 1;
        chatwindow.active = false;
    

JSON 示例


   "storyline":[
      
         "level":1,
         "event":1,
         "index":1,
         "content":"hello"
      ,
      
         "level":1,
         "event":1,
         "index":2,
         "content":"yes I saw that"
      ,
      
         "level":7,
         "event":1,
         "index":1,
         "content":"can I buy a sandwhich?"
      ,
      
         "level":7,
         "event":1,
         "index":2,
         "content":"thank you"
      ,
      
         "level":7,
         "event":1,
         "index":3,
         "content":"Salt please"
      ,
      
         "level":7,
         "event":2,
         "index":1,
         "content":"Java was"
      ,
      
         "level":7,
         "event":2,
         "index":2,
         "content":"my first language"
      
   ]

【问题讨论】:

【参考方案1】:

有很多方法可以处理这个问题,如果没有更多代码,很难确定您的设置是什么。您真正向我们展示的只是您正在将特定索引传递给列表,但由于某种原因仍在迭代大小为 sizeoffile 的列表,这根本没有提及。

我也不确定您是否有意这样做,但在您的 if 条件中,您使用的不是&amp;&amp; AND 运算符,而是bit-wise &amp; AND 运算符,这是不同的。

您可以简单地先添加另一个条件检查,以查看您正在读取的当前索引是否即将超过您正在使用的容器类型。

if((storyitemData["storyline"].Count) <= msgindex)

    // we reached the end of the container, so disable our chat window

else if((storyitemData["storyline"][i]["event"].ToString() == eventno.ToString()) & (storyitemData["storyline"][i]["level"].ToString() == levelno.ToString()) & (storyitemData["storyline"][i]["index"].ToString() == msgindex.ToString())))

...

如果我提到的内容不起作用,请在您的问题中添加更多细节,更多代码也不会造成伤害。将您要序列化的结构的原始容器添加到 JSON 会有所帮助。您是否有理由将整个聊天日志序列化为 JSON 以传递您的游戏?

【讨论】:

以上是关于在 Unity 中完成后退出聊天窗口的主要内容,如果未能解决你的问题,请参考以下文章

Shiro在logout退出后,怎么防止浏览器的后退刷新操作

离子2:如何处理硬件后退按钮,检查应用程序中退出的确认

java web系统安全退出后点击浏览器后退按钮还会跳转到刚才浏览页面

使用后退按钮退出应用程序后,我只能从共享偏好中获取值

如何在 Unity 中前进和/或后退?

PyQt5 窗口在运行几秒钟后自动关闭 - “进程以退出代码 -1073741819 (0xC0000005) 完成”