在 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 条件中,您使用的不是&&
AND 运算符,而是bit-wise
&
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退出后,怎么防止浏览器的后退刷新操作