首先Lua中不存在byte[]类型,但又不属于userdata,所有的byte[]在lua中的数据类型为string (可以使用type(data)打印出来看),但是在实际使用的过程中和真正的string还是有一些区别 今天在项目中想将服务器转过来的protobuff数据序列化到本地,模拟服务器发消息,简化调试,结果确在序列化与反序列化的时候遇到了一个问题,那就是当 local data = msg:SerializeToString() 之后把作为“字符串”的data写成…
首先Lua中不存在byte[]类型,但又不属于userdata,所有的byte[]在lua中的数据类型为string (可以使用type(data)打印出来看),但是在实际使用的过程中和真正的string还是有一些区别 今天在项目中想将服务器转过来的protobuff数据序列化到本地,模拟服务器发消息,简化调试,结果确在序列化与反序列化的时候遇到了一个问题,那就是当 local data = msg:SerializeToString() 之后把作为“字符串”的data写成…
[LuaInterface.NoToLua]static public bool Raycast (Vector3 inPos) { for (int i = 0; i < list.size; ++i) { UICamera cam = list.buffer[i]; // Skip inactive scripts if (!cam.enabled || !NGUITools.GetActive(cam.gameObject)) continue; // Convert to view space cur…
最近发现一个动作播放的细节问题,策划在技能编辑器中配置了在极短的时间中连续造成伤害的技能,间隔时间比受击动作时间还要短,这就意味着播放同一个动作(受击)时,需要打断之前的播放,注意,我这里说的是同一个动作的打断,并不是同一个动作的播放 经测试,在Animator中同一个状态在播放过程中无法再次播放自己,只有切到其他状态,再切回来这一个方法,但显然这样会导致结果并不是我们想要的,那么如果将两个状态设置成一样动作,然后在这两个状态之间来回切换呢?答案是可以的 于是这里又出现另一个问题,项目已经到后期了,让美术同学把每个…
在Unity中经常用到本地坐标(相对坐标)与世界坐标的转换,比如在开发某些UI组件时,本文整理了相关转换接口 测试层级如下图: 测试代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; public class JCTest_Trans : MonoBehaviour { public Transform mTestPoint; void Start() { //本地坐标(相对于Point_Paren…
游戏中的界面往往会添加一些动效来丰富玩家体验,前段时间我使用后期做了一个界面过渡的小功能,原理并不复杂,不过在刚接收需求的时候思路上也走了一些歪路,先看最终效果: 这个效果其实挺常见的,就是一个遮罩动画,相信大家分分钟就能把shader写出来,然而相我写完之后准备用到项目的时候,我发现了一个问题,我们的项目是使用NGUI做的(UGUI也有这个问题),游戏中的界面是由很多图片拼起来的,并不是一张图,而这个效果只能用于一张图片,此时我第一个想到的就是NGUI中UIPanel的SoftClip功能,众所周知,SoftCl…
前两天用后处理写了一个界面打开效果,结果在手机上显示黑屏,郁闷上的日志上并没有报错,在Unity中,可以方便的使用FrameDebug进行调试,如下图 可以使用Click+鼠标左键点开缩略图,查看对shader的赋值是否正确。 然而在手上,连接真机调试却是这样: 没有办法看到输入的纹理是否是正确的,所以第一想法就是把纹理输出的屏幕上,然后打真机进行调试,仔细观察FrameDebug的渲染顺序(如下图),发现UGUI.RenderOverlays在URP的最后渲染,也就是说我的截图操作在UGUI的RenderOver…
原来在BuildIn中修改RenderTarget很容易,它可以让我们用额外的相机照画面进行后处理再贴到指定的对象上,比如镜子,湖面,但是最近项目用了URP后渲染管线变了,问了同事后才知道需要单独接管额外相机的渲染,整理后代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Univers…
前段时间项目升级了使用了URP后,收到了一些关于后期的BUG,Debug后发现URP改变了渲染管线导致原先BuildIn的一些机制无法使用了,比如OnRenderImage、OnPreRender等函数失效,所以之前BuildIn的写的一些效果都不能用了,于是源看了一下URP源码,也查找网上的一些相关资料,有了个大致的理解,先把使用方式记录下来,之后抽空再写一篇URP源码设计防止遗忘 这里拿项目中的一个实例来说明使用方式,功能描述: 角色XXX释放技能后,除了场上的角色与特效,其他可见物都变成深红色(用于加强角色技…
用python写工具最麻烦的就是编码问题,chardet库可以方便查看输入源是什么编码格式 使用pip安装chardet库 python -m pip install chardet 使用代码如下: #! python2 # coding=utf-8 import os import sys import codecs import chardet if __name__ == '__main__': try: f = codecs.open('Module_Activity.txt',"r","utf-8") l…
Unity的Package Manager(Windows/Package Manager)安装的插件默认存放在 Library\PackageCache 下,但是Library下一般会存放与平台相关的临时文件,通常做项目时不会上传版本控制库(如 svn,git...),所以我们需要把Library\PackageCache下面的插件移动到Packages(与Assets平级)下 实例如下,打开Package Manager搜索并安装URP插件 安装完成后,在Library\PackageCache下可以…