CSDNhttps://mp.csdn.net/mp_blog/creation/editor/125563656参考这个执行安装,

vscode安装EmmyLua插件

打开用户设置,输入encoding,勾选Auto Guess Encoding,解决中文乱码 
编码格式一定要是 UTF-8 
UTF-8 with BOM 格式加载不出来
lua 路径最好是在和其他lua路径一样

将emmy_core.dll 放到unity 安装的更目录
--EmmyLuaService.cs 放到Editor 文件下 在菜单栏选择 Enable
--调试时先把原来的launch.json  文件删了-- 选中--运行--启动调试,选择终端 --配置launch ,选择平台
--调试CS 选择unity Debug 调试lua 选择EmmyLua New Debug  配置launch 在一个.lua 脚本里
--启动 ctrl +shift +p  输入EmmyLua Insert Emmy Debugger Coder
--选择 x64 生成配置文件  
--例如 
package.cpath =
    package.cpath ..
    ";c:/Users/Administrator.XSOOY-20190615H/.vscode/extensions/tangzx.emmylua-0.3.37/debugger/emmy/windows/x64/?.dll"
local dbg = require("emmy_core")
dbg.tcpListen("localhost", 9966)

--如果启动提示没有加载出来emmy_core 请在上述地址中找

using System;
using System.IO;
using System.Linq;
using System.Net.Sockets;
using System.Reflection;
using System.Reflection.Emit;
using System.Text;
using System.Threading;
using UnityEditor;
using UnityEditor.Callbacks;
// ReSharper disable Allnamespace EmmyLua
{enum TypeKind{Class,Array,}enum Proto{Lib,Ping}[InitializeOnLoad]class EmmyLuaService{private static Socket socket;private static Thread receiveThread;private static int PORT = 996;private static bool doTryLater;private static DateTime lastTime;private static bool connected;private static bool running;private const string KEY_EMMY_SERVICE_ENABLE = "emmy.service.enable";private static bool IsEnable{get { return EditorPrefs.GetBool(KEY_EMMY_SERVICE_ENABLE); }set { EditorPrefs.SetBool(KEY_EMMY_SERVICE_ENABLE, value); }}[MenuItem("EmmyLua/Enable")]static void EnableService(){IsEnable = true;StartConnect();}[MenuItem("EmmyLua/Enable", true)]static bool EnableServiceCheck(){return !IsEnable;}[MenuItem("EmmyLua/Disable")]static void DisableService(){IsEnable = false;Stop();}[MenuItem("EmmyLua/Disable", true)]static bool DisableServiceCheck(){return IsEnable;}static EmmyLuaService(){EditorApplication.update += Update;StartConnect();}static void StartConnect(){if (running || !IsEnable)return;running = true;connected = false;doTryLater = false;try{if (socket != null)socket.Close();socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);socket.BeginConnect("127.0.0.1", PORT, OnConnect, socket);}catch (Exception e){TryLater();}}private static void OnConnect(IAsyncResult ar){try{socket.EndConnect(ar);connected = true;SendData(socket);}catch (Exception e){TryLater();}}private static void TryLater(){running = false;connected = false;doTryLater = true;lastTime = DateTime.Now;}private static void Stop(){if (running){running = false;connected = false;doTryLater = false;if (socket != null)socket.Close();}}private static void Update(){if (!IsEnable)return;var sp = DateTime.Now - lastTime;if (sp.TotalSeconds > 5){if (connected){Ping();}else if (doTryLater){StartConnect();}}}[DidReloadScripts]static void UpdateScripts(){StartConnect();}private static void WriteString(BinaryWriter writer, string value){var encoding = Encoding.UTF8;var chars = encoding.GetBytes(value);writer.Write(chars.Length);writer.Write(chars);}private static void WriteType(BinaryWriter write, Type type){if (type.IsArray){write.Write((byte) TypeKind.Array);WriteType(write, type.GetElementType());}else{write.Write((byte) TypeKind.Class);WriteString(write, type.FullName ?? "any");}}private static void Ping(){using (var buf = new MemoryStream()){var writer = new BinaryWriter(buf);writer.Write(8);writer.Write((int) Proto.Ping);try{var bytes = buf.GetBuffer();socket.Send(bytes, 8, SocketFlags.None);}catch (Exception e){TryLater();}}}private static void SendData(Socket client){var buf = new MemoryStream();var writer = new BinaryWriter(buf);writer.Seek(8, SeekOrigin.Begin);var types = GetTypes();foreach (var type in types){WriteTypeData(type, writer);}writer.Flush();// write size and protovar len = (int) buf.Length;writer.Seek(0, SeekOrigin.Begin);writer.Write(len);writer.Write((int) Proto.Lib);writer.Flush();// sendclient.Send(buf.GetBuffer(), len, SocketFlags.None);writer.Close();}private static void WriteTypeData(Type type, BinaryWriter writer){var fullName = type.FullName;if (!string.IsNullOrEmpty(fullName)){// full nameWriteString(writer, fullName);// base type full name{string baseTypeFullName = null;if (type.BaseType != null)baseTypeFullName = type.BaseType.FullName;writer.Write(baseTypeFullName != null);if (baseTypeFullName != null)WriteString(writer, baseTypeFullName);}// fieldsvar fields =type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly);writer.Write(fields.Length);foreach (var fi in fields){WriteString(writer, fi.Name);WriteType(writer, fi.FieldType);}// propertiesvar properties =type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static| BindingFlags.DeclaredOnly);writer.Write(properties.Length);foreach (var pi in properties){WriteString(writer, pi.Name);WriteType(writer, pi.PropertyType);}// methodsvar methods =(from mi in type.GetMethods(BindingFlags.Public | BindingFlags.Instance| BindingFlags.Static | BindingFlags.DeclaredOnly)where !mi.Name.StartsWith("get_") && !mi.Name.StartsWith("set_")select mi).ToArray();writer.Write(methods.Count());foreach (var mi in methods){// nameWriteString(writer, mi.Name);// is staticwriter.Write(mi.IsStatic);// parametersvar parameterInfos = mi.GetParameters();writer.Write(parameterInfos.Length);foreach (var pi in parameterInfos){WriteString(writer, pi.Name);WriteType(writer, pi.ParameterType);}// returnsWriteType(writer, mi.ReturnType);}}}private static Type[] GetTypes(){var unityTypes = from assembly in AppDomain.CurrentDomain.GetAssemblies()where !(assembly.ManifestModule is ModuleBuilder)&& assembly.FullName != "UnityEditor"from type in assembly.GetExportedTypes()where type.BaseType != typeof(MulticastDelegate)&& !type.IsInterface && !type.IsEnum//&& !type.IsGenericType//&& !type.IsGenericTypeDefinition&& !type.IsNested&& !IsExcluded(type)select type;var arr = unityTypes.ToArray();return arr;}private static bool IsExcluded(Type type){return false;}}
}

vscode+unity+Emmylua调试使用教程相关推荐

  1. phpstudy php调试,phpStudy vscode 搭建debug调试的教程详解

    下载地址 [Xdebug] zend_extension=D:/phpstudy_pro/Extensions/php/php7.3.4nts/ext/php_xdebug.dll xdebug.co ...

  2. 在VScode 中使用EASYX详细教程(VScode+MSVC+Easy X)

    众所周知,vscode是一款强大的IDE,深受广大码友喜爱,博主曾尝试过用它实现各种脱离特定平台的写码,这里给大家介绍vscode配置EASYX的详细教程. 1.配置MSVC编译环境 首先要知道的是E ...

  3. Vscode,pudb远程调试服务器中的程序

    Vscode远程调试服务器中的程序 VScode可以远程调试服务器中的代码,应该适合更多的人. 请参考:成功解决 vscode远程调试python 请注意第三步的时候,如果你的端口号不是默认22,就需 ...

  4. vscode怎么单步调试不了php,vscode如何单步调试

    vscode如何单步调试? vscode单步调试 VScode配置 0.快捷键Ctrl + ` 打开默认终端; Ctrl + Shift + ` 新建新的终端; Ctrl + Shift + Y 打开 ...

  5. vscode断开调试服务器文件,vscode显示等待调试器断开连接

    我正在尝试在vscode上调试量角器脚本. 我编辑了launch.json文件,但是调试控制台抛出了下面的错误. vscode调试控制台输出: C:\Program Files\nodejs\node ...

  6. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  7. Unity插件-NGUI使用教程

    Unity插件-NGUI使用教程 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 NGUI 一款强大 ...

  8. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

  9. Unity 2D游戏开发教程之为游戏场景添加多个地面

    Unity 2D游戏开发教程之为游戏场景添加多个地面 为游戏场景添加多个地面 显然,只有一个地面的游戏场景太小了,根本不够精灵四处活动的.那么,本节就来介绍一种简单的方法,可以为游戏场景添加多个地面. ...

  10. Unity 2D游戏开发教程之精灵的死亡和重生

    Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...

最新文章

  1. java多线程系类:基础篇:10生产者消费者的问题
  2. Android Studio使用外部jar包
  3. 背完这444句英语,你的口语绝对不成问题了
  4. linux如何挂载U盘
  5. 【POJ - 1269 】Intersecting Lines (计算几何,直线间的位置关系)
  6. 消息中间件系列(二):Kafka的原理、基础架构、以及使用场景
  7. mui + php,GitHub - alphaphp/mui-kidApp: 基于 MUI 构建一个具有 90 +页面的APP应用
  8. C++自学13:位运算(std::bitset)
  9. leetcode 合并数组
  10. java weblogic 下载_JAVA_weblogic企业级技术 PDF 下载
  11. vscode安装程序员鼓励师插件
  12. Android-Bitmap图片优化
  13. mysql生成连续数字或日期
  14. 【R语言】ggplot2:初次见面,请多多关照!
  15. 多实践、少扯淡,生死看淡,不服就干
  16. 《指弹:千与千寻:Always with me》
  17. 做SEO优化第五步:定位目标关键词和长尾关键词
  18. 大型网站架构 图片服务器分离
  19. 《The One!团队》:BETA Scrum metting1
  20. STM32笔记——定时器输入捕获功能(测量PWM的频率和占空比)

热门文章

  1. fastboot刷机工具_红魔3/3S 刷机教程
  2. win10系统,字体及软件内容特别小(亲试有效)
  3. angular应用coreui框架
  4. JAVA打卡记录计算时间
  5. 大数据课程30天掌握 spark内存计算(python )-徐培成-专题视频课程
  6. Origin安装Could not connect to Internet Origin installation requires an Internet Connection
  7. Unity一键自动将多个FBX文件生成AB包+又一些小玩意
  8. 临时邮箱email网址收集
  9. Python之仓库管理系统
  10. creo扫描选择多条链作为轨迹_Creo与Proe可变截面扫描关系式雨伞建模实例-一加一学院...