/// <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; }
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"); } } }
public void WaitNewInput() { interpreterMode = EInterpreterMode.Wait; }