【问题标题】:Exit Chat Window When Finished In Unity在 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"
      }
   ]
}

【问题讨论】:

    标签: c# json unity3d user-interface


    【解决方案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 以传递您的游戏?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2011-08-01
      相关资源
      最近更新 更多