当前位置: 首页 > wzjs >正文

怎么自己做网站赚钱上海网站制作开发

怎么自己做网站赚钱,上海网站制作开发,平江区建设局网站,网站开发客户端将之前的代码给deepseek跑了一下,感觉优化的很不错。效果与预期相符。 能正确显示和解析富文本 TypewriterEffect.cs using System; using System.Text; using System.Collections; using System.Collections.Generic; using UnityEngine;namespace MYTOOL.UI {[Di…

将之前的代码给deepseek跑了一下,感觉优化的很不错。效果与预期相符。
能正确显示和解析富文本
TypewriterEffect.cs

using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;namespace MYTOOL.UI
{[DisallowMultipleComponent][RequireComponent(typeof(UnityEngine.UI.Text))]public class TypewriterEffect : MonoBehaviour{[SerializeField, Tooltip("默认打字速度(每个字符的间隔时间)")]private float defaultTypeInterval = 0.05f;private UnityEngine.UI.Text targetTextComponent;private readonly StringBuilder typewriterBuilder = new StringBuilder();private string processedText;private Coroutine typingCoroutine;private Action onCompleteCallback;private static readonly string[] uguiRichTextTags = { "b", "i", "size", "color" };private readonly Stack<string> activeTags = new Stack<string>();private void Awake(){ValidateTextComponent();}public void StartTyping(string content, float speed = -1){ValidateTextComponent();PrepareForNewTyping(content, speed);typingCoroutine = StartCoroutine(TypingRoutine(content));}public void SkipTyping(){if (!IsTyping) return;StopCoroutine(typingCoroutine);typingCoroutine = null;targetTextComponent.text = processedText;activeTags.Clear();onCompleteCallback?.Invoke();}public bool IsTyping => typingCoroutine != null;public void SetCompleteCallback(Action callback){onCompleteCallback = callback;}private void ValidateTextComponent(){if (targetTextComponent == null){targetTextComponent = GetComponent<UnityEngine.UI.Text>();if (targetTextComponent == null){throw new MissingComponentException("Text component is required for TypewriterEffect");}}}private void PrepareForNewTyping(string content, float speed){defaultTypeInterval = speed > 0 ? speed : defaultTypeInterval;processedText = ProcessSpeedTags(content);targetTextComponent.text = string.Empty;activeTags.Clear();if (typingCoroutine != null){StopCoroutine(typingCoroutine);}}private IEnumerator TypingRoutine(string originalText){typewriterBuilder.Clear();float currentSpeed = defaultTypeInterval;for (int index = 0; index < originalText.Length; index++){if (TryProcessSpeedTag(originalText, ref index, out float newSpeed)){currentSpeed = newSpeed;continue;}if (TryProcessRichTextTag(originalText, ref index)){UpdateTextDisplay();continue;}typewriterBuilder.Append(originalText[index]);UpdateTextDisplay();yield return new WaitForSeconds(currentSpeed);}FinalizeTyping();}private bool TryProcessSpeedTag(string text, ref int index, out float speed){speed = defaultTypeInterval;const string speedTagOpen = "[speed=";const string speedTagClose = "[/speed]";// 处理开标签if (text[index] == '[' && text.Length > index + speedTagOpen.Length && text.Substring(index, speedTagOpen.Length) == speedTagOpen){int closingBracketIndex = text.IndexOf(']', index);if (closingBracketIndex == -1) return false;string speedValue = text.Substring(index + speedTagOpen.Length, closingBracketIndex - index - speedTagOpen.Length);if (float.TryParse(speedValue, out speed)){index = closingBracketIndex;return true;}}// 处理闭标签if (text.Length > index + speedTagClose.Length && text.Substring(index, speedTagClose.Length) == speedTagClose){speed = defaultTypeInterval;index += speedTagClose.Length - 1;return true;}return false;}private bool TryProcessRichTextTag(string text, ref int index){if (text[index] != '<') return false;// 处理开标签foreach (var tag in uguiRichTextTags){string tagStart = $"<{tag}";if (text.Length > index + tagStart.Length && text.Substring(index, tagStart.Length) == tagStart){int closingIndex = text.IndexOf('>', index);if (closingIndex == -1) return false;string fullTag = text.Substring(index, closingIndex - index + 1);typewriterBuilder.Append(fullTag);activeTags.Push(tag);index = closingIndex; // 跳过整个标签内容return true;}}// 处理闭标签foreach (var tag in uguiRichTextTags){string tagEnd = $"</{tag}>";if (text.Length >= index + tagEnd.Length && text.Substring(index, tagEnd.Length) == tagEnd){if (activeTags.Count > 0 && activeTags.Peek() == tag){activeTags.Pop();}typewriterBuilder.Append(tagEnd);index += tagEnd.Length - 1; // 跳过整个闭合标签return true;}}return false;}private void UpdateTextDisplay(){targetTextComponent.text = typewriterBuilder.ToString() + GenerateActiveTagsClosure();}private string GenerateActiveTagsClosure(){StringBuilder closure = new StringBuilder();foreach (var tag in activeTags){closure.Append($"</{tag}>");}return closure.ToString();}private void FinalizeTyping(){typingCoroutine = null;onCompleteCallback?.Invoke();}private static string ProcessSpeedTags(string input){return System.Text.RegularExpressions.Regex.Replace(input, @"\[speed=[^\]]+\]", string.Empty, System.Text.RegularExpressions.RegexOptions.IgnoreCase);}}public static class TypewriterExtensions{public static void StartTypewriter(this UnityEngine.UI.Text textComponent, string content, float speed = 0.05f, Action onComplete = null){TypewriterEffect effect = GetOrAddTypewriterComponent(textComponent);effect.StartTyping(content, speed);effect.SetCompleteCallback(onComplete);}public static void SkipTypewriter(this UnityEngine.UI.Text textComponent){if (textComponent.TryGetComponent<TypewriterEffect>(out var effect)) effect.SkipTyping();}public static bool IsTyping(this UnityEngine.UI.Text textComponent){TypewriterEffect effect = textComponent.GetComponent<TypewriterEffect>();return effect != null && effect.IsTyping;}private static TypewriterEffect GetOrAddTypewriterComponent(UnityEngine.UI.Text textComponent){if (!textComponent.TryGetComponent<TypewriterEffect>(out var effect)){effect = textComponent.gameObject.AddComponent<TypewriterEffect>();}return effect;}}
}

效果
测试代码
在这里插入图片描述

http://www.dtcms.com/wzjs/333444.html

相关文章:

  • 青岛商城网站建设怎样做网站的优化、排名
  • 吴江做网站的公司百度seo关键词
  • 网赌网站怎么建设吴江seo网站优化软件
  • 企业营销案例百度seo关键词优化排名
  • 空间站建设太原seo自媒体
  • 深圳营销网站制作网上教育培训机构
  • 镇江网站关键字优化武汉seo招聘信息
  • 杭州 网站建设公司seo工资待遇 seo工资多少
  • 百度网盘可以做网站吗链接提取视频的网站
  • 做网站找什么公司工作厦门关键词排名seo
  • 电商设计网站模板做网页
  • nginx 一个独立ip 建立2个独立网站 2个域名南京网站设计
  • 营销型网站源码三亚百度推广公司
  • 自己买服务器做视频网站网络推广网站排行榜
  • wordpress 建立第二个网站互联网营销师题库
  • 专业做网站排名多少钱淄博做网站的公司
  • 前端搜索网站引擎怎么做网站关键词优化的步骤和过程
  • 临沂企业做网站torrent种子猫
  • 给别人做网站的话术app网络推广公司
  • 深圳做h5网站网站优化招商
  • wordpress如何做seo星乐seo网站关键词排名优化
  • 株洲网站关键词优化深圳网络推广seo软件
  • 网站开发出来有后台么免费制作网站app
  • 横沥镇网站建设网站搜索引擎优化情况怎么写
  • 珠宝类网站建设关键词优化seo优化
  • wordpress默认播放器徐州新站百度快照优化
  • 亚马逊站外deal网站seo排名优化怎么样
  • 网站建设的市场分析seo外包多少钱
  • 代理游戏网站google play下载安卓
  • nas云存储做视频网站足球联赛排名