Exemplo n.º 1
0
        /// <summary>
        /// 用以从编辑模式切换到展示模式;或等待新的输入。
        /// </summary>
        public void StartDisplay(string jsonFileName)
        {
            // 解析 json 文件并排序
            FileStream jsonfile = File.OpenRead(jsonFileName);
            int        len      = (int)jsonfile.Length;

            byte[] bytes = new byte[len];
            jsonfile.Read(bytes, 0, len);

            // 输入的 json 文件使用 UTF-8 编码
            string jsonstring = System.Text.Encoding.UTF8.GetString(bytes);

            keyFrameList = JsonUtility.FromJson <KeyFrameList>(jsonstring);
            if (keyFrameList == null)
            {
                Debug.LogError("Unexpected json string.");
            }
            keyFrameList.keyFrames.Sort((k1, k2) =>
            {
                if (k1.timestamp < k2.timestamp)
                {
                    return(-1);
                }
                return(1);
            });

            interpreterMode = EInterpreterMode.Display;
            starttime       = Time.realtimeSinceStartup;
        }
Exemplo n.º 2
0
        void Update()
        {
            if (interpreterMode == EInterpreterMode.Display)
            {
                while (i < keyFrameList.keyFrames.Count && Time.time - starttime > keyFrameList.keyFrames[i].timestamp)
                {
                    KeyFrame frame = keyFrameList.keyFrames[i];
                    switch (frame.action)
                    {
                    case 0:     // 出现
                        Appear(frame);
                        break;

                    case 1:     // 消失
                        DisAppear(frame);
                        break;

                    case 2:     // 移动和动画
                        Move(frame);
                        break;

                    case 3:     // 播放音乐
                        Audio(frame);
                        break;

                    case 4:     // 更换背景图片
                        Background(frame);
                        break;

                    case 5:
                        ShowSubtitle(frame);
                        break;

                    case 6:
                        ShowDialog(frame);
                        break;

                    default:
                        Debug.LogError($"Unexpected action type {frame.action} at timestamp {frame.timestamp}");
                        break;
                    }
                    ++i;
                }
                if (i >= keyFrameList.keyFrames.Count)
                {
                    interpreterMode = EInterpreterMode.Wait;
                }
            }
            else if (interpreterMode == EInterpreterMode.Wait)
            {
                // 去找 streamingAssets 里有没有新文件
                FileInfo[] files = streamingDir.GetFiles();

                if (files.Length > fileIndex)
                {
                    StartDisplay($"{Application.streamingAssetsPath}/{JSON_FILE_NAME}{fileIndex++}.json");
                }
            }
        }
Exemplo n.º 3
0
 public void WaitNewInput()
 {
     interpreterMode = EInterpreterMode.Wait;
 }