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

个人建站流程详解wordpress好用的会员

个人建站流程详解,wordpress好用的会员,网站后台建设公司,广州编程课程培训机构排名1 对于项目中一些比较长的日志#xff0c;比如前后端交互协议具体数据等#xff0c;这些日志内容可能会比较长#xff0c;在unity控制面板上查看不是十分方便#xff0c;我们可以对双击事件进行扩展#xff0c;将日志保存到一个文本中#xff0c;然后用系统默认的文本查看…1 对于项目中一些比较长的日志比如前后端交互协议具体数据等这些日志内容可能会比较长在unity控制面板上查看不是十分方便我们可以对双击事件进行扩展将日志保存到一个文本中然后用系统默认的文本查看工具查看这个日志 2 项目中如果用到了lua当我们在控制台输出lua文件的时候能不能双击日志用我们的代码编辑器软件打开日志输出位置 console日志双击然后用记事本打开显示 我们先用 OnOpenAsset 特性重写双击回调方法这个方法返回false会继续执行系统默认日志双击打开方法返回true则会中断。 我们想要的效果是用记事本打开这个特殊日志但是不需要跳转到对应的代码输出位置 首先我们先在lua里面把日志输出方法重写一下在日志输出的时候添加一个标签 “”,当我们检测到双击的日志信息包含这个标签则用记事本打开这一段日志我们也可以把一些特殊的日志先在代码中缓存在这个时候调用缓存读取那些特殊的日志进行输出显示 function printLongLog(fmt, ...)local logText string.format(fmt, ...)local debugInfo debug.getinfo(2)local str string.format(%s\nopen in file, logText, debugInfo.short_src, debugInfo.currentline)local logMessage concatStrs(str, debug.traceback(, 2))UnityEngine.Debug.Log(logMessage) end 然后再C#代码中监听这一段日志 [OnOpenAsset(0)]public static bool OnAsset(int instanceID, int line){string assetPath AssetDatabase.GetAssetPath(instanceID);string fileExtension Path.GetExtension(assetPath);string stackTrace GetStackTrace();if (string.IsNullOrEmpty(stackTrace)){return false;}if (stackTrace.Contains(open in file)) //对于一些比较长的日志添加标签open in file双击的时候再文本中打开{openLog(stackTrace);return true;}return false;}获取console里面的日志 private static string GetStackTrace(){var consoleWindowType typeof(EditorWindow).Assembly.GetType(UnityEditor.ConsoleWindow);var fieldInfo consoleWindowType.GetField(ms_ConsoleWindow, BindingFlags.Static | BindingFlags.NonPublic);var consoleWindowInstance fieldInfo.GetValue(null);if (null ! consoleWindowInstance (object)EditorWindow.focusedWindow consoleWindowInstance){fieldInfo consoleWindowType.GetField(m_ActiveText, BindingFlags.Instance | BindingFlags.NonPublic);string activeText fieldInfo.GetValue(consoleWindowInstance).ToString();return activeText;}return ;}用记事本打开日志文件我们先把日志信息保存在本地然后调用系统方法打开这个文件 这里用到了一个方法 System.Diagnostics.Process.Start(fileName),参数是文件的完整路径调用系统默认方式打开改文件 private static void openLog(string stackTrace){string fileName GetFileSaveName();string saveDirPath Application.dataPath /../Debug;if (!Directory.Exists(saveDirPath)){Directory.CreateDirectory(saveDirPath);}string savePath saveDirPath / fileName;File.WriteAllText(savePath, stackTrace);System.Diagnostics.Process.Start(savePath);}private static string GetFileSaveName(){DateTime currentTime DateTime.Now;string customFormat currentTime.ToString(yyyy_MM_dd_HH_mm_ss);string fileName $debug_{customFormat}.txt;return fileName;}双击打开lua日志然后用lua编辑器定位到日志输出位置 对于lua输出的日志我们为了便于打开可以用类似上面的方法重新封装一个lua日志输出方法然后通关特殊标签的进行确定lua文件的名称和对应的行号。也可以进行拆分lua堆栈数据取到lua代码名称和对应堆栈。 添加标签方式的lua日志输出 function print(fmt, ...)local logText string.format(fmt, ...)local debugInfo debug.getinfo(2)local str string.format(%s\nfilePath%s/filePathline%s/line, logText, debugInfo.short_src, debugInfo.currentline)local logMessage concatStrs(str, debug.traceback(, 2))UnityEngine.Debug.Log(logMessage) end获取文件名称和行号 static bool OpenLua(string logText){//获取lua文件路径Regex regex new Regex(filePath.*\/filePath);Match match regex.Match(logText);if (!match.Success){return false;}string filePath match.Groups[0].Value.Trim();int length filePath.Length - 10 - 11; //去掉开头和结尾的字符串 filePath /filePathfilePath filePath.Substring(10, length);filePath filePath.Replace(., /);if (!filePath.EndsWith(.lua)){filePath filePath .lua;}//获取日志行号Regex lineRegex new Regex(line.*\/line);match lineRegex.Match(logText);if (!match.Success){return false;}string luaLineString match.Groups[0].Value;luaLineString.Trim();length luaLineString.Length - 6 - 7;luaLineString luaLineString.Substring(6, length);int luaLine int.Parse(luaLineString.Trim());return OpenFileAtLineExternal(filePath, luaLine);}对于系统默认输出日志我们通关拆分字符串方式获取 static bool OpenLuaDefault(string logText){int index logText.IndexOf(stack traceback:);string temp logText.Substring(index, logText.Length - index);string[] arr temp.Split(:);if (arr.Length 3){return false;}string filePath arr[1].Trim();int luaLine int.Parse(arr[2]);filePath filePath .lua;return OpenFileAtLineExternal(filePath, luaLine);}有了文件名和行号我们就可以通关调用VScode或者Idea编辑器软件打开对应的文件并定位到指定的行 static void OpenFileWith(string fileName, int line){string editorPath EditorUserSettings.GetConfigValue(EXTERNAL_EDITOR_PATH_KEY);System.Diagnostics.Process proc new System.Diagnostics.Process();proc.StartInfo.FileName editorPath;string projectRootPath EditorUserSettings.GetConfigValue(LUA_PROJECT_ROOT_FOLDER_PATH_KEY);if (string.IsNullOrEmpty(projectRootPath)){SetLuaProjectRoot();return;}string procArgument ;if (editorPath.IndexOf(idea) ! -1) //idea{procArgument string.Format({0} --line {1} {2}, projectRootPath, line, fileName);}else if (editorPath.IndexOf(Code.exe) ! -1) // VSCode{string filePath Path.Combine(projectRootPath, fileName);procArgument string.Format(-g {0}:{1}:0, filePath, line);}else{procArgument string.Format({0}:{1}:0, fileName, line);}proc.StartInfo.Arguments procArgument;proc.Start(); }完整代码 lua 日志方法 function print(fmt, ...)local logText string.format(fmt, ...)local debugInfo debug.getinfo(2)local str string.format(%s\nfilePath%s/filePathline%s/line, logText, debugInfo.short_src, debugInfo.currentline)local logMessage concatStrs(str, debug.traceback(, 2))UnityEngine.Debug.Log(logMessage) endfunction printLongLog(fmt, ...)local logText string.format(fmt, ...)local debugInfo debug.getinfo(2)local str string.format(%s\nopen in file, logText, debugInfo.short_src, debugInfo.currentline)local logMessage concatStrs(str, debug.traceback(, 2))UnityEngine.Debug.Log(logMessage) endC#方法 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Reflection; using System.Text.RegularExpressions; using UnityEditor; using UnityEditor.Callbacks; using UnityEngine;public class ConsoleTools : MonoBehaviour {public const string EXTERNAL_EDITOR_PATH_KEY mTv8;public const string LUA_PROJECT_ROOT_FOLDER_PATH_KEY obUd;[OnOpenAsset(0)]public static bool OnAsset(int instanceID, int line){string assetPath AssetDatabase.GetAssetPath(instanceID);string fileExtension Path.GetExtension(assetPath);// string fileName Path.GetFileNameWithoutExtension(assetPath);if(fileExtension ! .cs fileExtension ! .lua){return false; }string stackTrace GetStackTrace();if (string.IsNullOrEmpty(stackTrace)){return false;}if (stackTrace.Contains(open in file)) //对于一些比较长的日志添加标签open in file双击的时候再文本中打开{openLog(stackTrace);return true;}if (stackTrace.Contains(stack traceback:)) //lua输出堆栈信息会自带 “stack traceback:” 这描述这里用来筛选lua日志{bool isOpenSuccess false;if (stackTrace.Contains(filePath)){isOpenSuccess OpenLua(stackTrace);}else{isOpenSuccess OpenLuaDefault(stackTrace);}return isOpenSuccess;}return false;}/// summary/// 通关日志堆栈获取日志信息/// /summary/// returns/returnsprivate static string GetStackTrace(){var consoleWindowType typeof(EditorWindow).Assembly.GetType(UnityEditor.ConsoleWindow);var fieldInfo consoleWindowType.GetField(ms_ConsoleWindow, BindingFlags.Static | BindingFlags.NonPublic);var consoleWindowInstance fieldInfo.GetValue(null);if (null ! consoleWindowInstance (object)EditorWindow.focusedWindow consoleWindowInstance){fieldInfo consoleWindowType.GetField(m_ActiveText, BindingFlags.Instance | BindingFlags.NonPublic);string activeText fieldInfo.GetValue(consoleWindowInstance).ToString();return activeText;}return ;}/// summary/// 以文件个格式打开日志/// /summary/// param namestackTrace/paramprivate static void openLog(string stackTrace){string fileName GetFileSaveName();string saveDirPath Application.dataPath /../Debug;if (!Directory.Exists(saveDirPath)){Directory.CreateDirectory(saveDirPath);}string savePath saveDirPath / fileName;File.WriteAllText(savePath, stackTrace);System.Diagnostics.Process.Start(savePath);}private static string GetFileSaveName(){DateTime currentTime DateTime.Now;string customFormat currentTime.ToString(yyyy_MM_dd_HH_mm_ss);string fileName $debug_{customFormat}.txt;return fileName;}static void SetExternalEditorPath(){string path EditorUserSettings.GetConfigValue(EXTERNAL_EDITOR_PATH_KEY);path EditorUtility.OpenFilePanel(设置lua文件默认打开的编辑器软件路径选择exe文件,path,exe);if (path ! ){EditorUserSettings.SetConfigValue(EXTERNAL_EDITOR_PATH_KEY, path);Debug.Log(Set Editor Path: path);}} static void SetLuaProjectRoot(){string path EditorUserSettings.GetConfigValue(LUA_PROJECT_ROOT_FOLDER_PATH_KEY);path EditorUtility.OpenFolderPanel(设置lua项目根目录位置,path,);if (path ! ){EditorUserSettings.SetConfigValue(LUA_PROJECT_ROOT_FOLDER_PATH_KEY, path);Debug.Log(Set Editor Path: path);}}static bool OpenLua(string logText){//获取lua文件路径Regex regex new Regex(filePath.*\/filePath);Match match regex.Match(logText);if (!match.Success){return false;}string filePath match.Groups[0].Value.Trim();int length filePath.Length - 10 - 11; //去掉开头和结尾的字符串 filePath /filePathfilePath filePath.Substring(10, length);filePath filePath.Replace(., /);if (!filePath.EndsWith(.lua)){filePath filePath .lua;}//获取日志行号Regex lineRegex new Regex(line.*\/line);match lineRegex.Match(logText);if (!match.Success){return false;}string luaLineString match.Groups[0].Value;luaLineString.Trim();length luaLineString.Length - 6 - 7;luaLineString luaLineString.Substring(6, length);int luaLine int.Parse(luaLineString.Trim());return OpenFileAtLineExternal(filePath, luaLine);}/// summary/// 打开没有标签的日志对应的脚本/// /summary/// param namelogText/param/// returns/returnsstatic bool OpenLuaDefault(string logText){int index logText.IndexOf(stack traceback:);string temp logText.Substring(index, logText.Length - index);string[] arr temp.Split(:);if (arr.Length 3){return false;}string filePath arr[1].Trim();int luaLine int.Parse(arr[2]);filePath filePath .lua;return OpenFileAtLineExternal(filePath, luaLine);}/// summary/// 打开指定的文件/// /summary/// param namefileName文件名/param/// param nameline行号/param/// returns/returnsstatic bool OpenFileAtLineExternal(string fileName, int line){string editorPath EditorUserSettings.GetConfigValue(EXTERNAL_EDITOR_PATH_KEY);if (string.IsNullOrEmpty(editorPath) || !File.Exists(editorPath)){ // 没有path就弹出面板设置SetExternalEditorPath();}OpenFileWith(fileName, line);return true;}static void OpenFileWith(string fileName, int line){string editorPath EditorUserSettings.GetConfigValue(EXTERNAL_EDITOR_PATH_KEY);System.Diagnostics.Process proc new System.Diagnostics.Process();proc.StartInfo.FileName editorPath;string projectRootPath EditorUserSettings.GetConfigValue(LUA_PROJECT_ROOT_FOLDER_PATH_KEY);if (string.IsNullOrEmpty(projectRootPath)){SetLuaProjectRoot();return;}string procArgument ;if (editorPath.IndexOf(idea) ! -1) //idea{procArgument string.Format({0} --line {1} {2}, projectRootPath, line, fileName);}else if (editorPath.IndexOf(Code.exe) ! -1) // VSCode{string filePath Path.Combine(projectRootPath, fileName);procArgument string.Format(-g {0}:{1}:0, filePath, line);}else{procArgument string.Format({0}:{1}:0, fileName, line);}proc.StartInfo.Arguments procArgument;proc.Start(); }}
http://www.w-s-a.com/news/78831/

相关文章:

  • 建个普通网站多少钱设计师培训多少
  • 建设校园网站的意义视频链接提取下载
  • 天津电子商务网站wordpress安装图片
  • 青岛房产网站东莞网络营销外包公司
  • 网站建设中的页数网上工伤做实网站
  • 给公司做网站这个工作怎么样wordpress不支持中文标签
  • 湖南网站推广优化cc域名做门户网站
  • 网站开发大概多久怎么制做网站
  • 鄂州官方网站食品网站建设需求分析
  • 福州网站建设金森要做好网络营销首先要
  • 中山哪里有好网站建设公司企业培训考试平台下载
  • 域名备案查询 网站备案查询企业网站建设问题研究
  • wordpress无法编辑北京优化网站方法
  • 公司建设一个网站最好的网站建设哪家好
  • 南京市住宅建设总公司网站wordpress 自己写的网页
  • 淄博网站制作企业高端长沙企业网站制作服务报价
  • 网站服务理念中外商贸网站建设
  • 如何自己建立网站中国建设银行网站忘记密码
  • 什么是a站如何在12366网站上做实名认证
  • 斗蟋蟀网站建设谭谭心怎么建设网站
  • 优秀网站开发商郑州网站建设套餐
  • 做伤残鉴约号网站购物网站建设新闻
  • 黄江网站建设公司自己房子做民宿挂什么网站
  • 手游网站做cpc还是cpm广告号宣武郑州阳网站建设
  • vs连接数据库做网站建立网站
  • 电商网站设计图片素材p2p网站建设石家庄
  • 莲塘网站建设如何文字推广一个婚恋网站
  • 医院网站建设工作汇报WordPress不发邮件了
  • 怎么做外语网站个人网页设计作品ps
  • 网站原型怎么做vps如何建两个网站