
Unity
文章平均质量分 63
zhenmu
这个作者很懒,什么都没留下…
展开
-
【unity】unity2021 URP管线下 SceneView没有MipMaps选项了怎么办?扩展Rendering Debugger工具
unity URP 扩展Rendering Debugger实现渲染mipmaps原创 2024-11-08 10:34:34 · 1290 阅读 · 0 评论 -
【unity】URP的shader开发中支持多光源,_ADDITIONAL_LIGHTS_VERTEX 和 _ADDITIONAL_LIGHTS 区别
一般来说使用 _ADDITIONAL_LIGHTS_VERTEX,可能要优化一些,但是有局限性,平行光还好,针对点光源,面片比较大的模型就很奇怪了, 这次就遇到这个问题,尝试地表接受一个点光源试试发现没作用,还以为代码没写好……项目里有一个其他同事实现的shader,美术那边希望能支持多个光源, 我一看代码里面, frag 函数里已经实现了。要支持 _ADDITIONAL_LIGHTS_VERTEX , (片元着色器代码 上面有示例了,不贴了)当然单独加一个也是可以的。原创 2023-06-14 11:31:18 · 3866 阅读 · 2 评论 -
【unity】navmesh很远的点寻路不到的处理(迭代寻路)
C++ 另外一个项目的实现,仅供参考, 思路差不多的,寻路发现未达终点,尝试若干次迭代, 如果得到的路点只有1个 或者 终点就是起点 或者 寻路失败,则说明没法继续寻路停止迭代。项目里,有个场景比较绕,比较远的目标寻路只会寻路到一半的地方就停下来, 终点是可达的,但unity的navmesh寻路算法本身因素,遍历深度有限制造成的。这种方案的问题就是 中间的点很可能走到一个沟沟里,然后又跑出来。原创 2023-06-09 11:48:34 · 1060 阅读 · 0 评论 -
[unity]【UGUI】UI经常换,代码尽量不改的方案; 同时也减少GameObject.Find的调用,方便程序开发时直接访问节点对象
抛砖引玉介绍一个UGUI开发时一个思路:项目 用lua做UI开发的。 一个toLua 一个XLua。 策划 或美术经常要调 已经做好的UI的外观, 一般需要变布局或节点层级。最早,代码里访问某个节点都是用GameObject.Find 找到节点, 层级关系一变,就需要程序配合改, 很麻烦。怎么做到调整UI,不用改代码呢?想到一个命名规范方案:程序拿到UI的prefab 绑上UI关联Lua的脚本后, 把所有程序需要访问的节点,改名成:rd_xxxxx, 脚本控制下的子节点rd_开头的...原创 2021-12-07 16:30:20 · 2748 阅读 · 0 评论 -
关于用gradle 自动拷贝 google-services.json的坑
一、Unity 2018 集成google play sdk时, 希望unity里直接用gradle方式打包成apk (不希望导出成android studio gradle项目,再修改什么的),unity 2017之后 可以在项目里 自定义 build.gradle文件二、集成google sdk 需要把 后台网站上下载的google-services.json 放到导出的gradl...原创 2019-12-05 13:51:47 · 2940 阅读 · 2 评论 -
[Unity]提供效率,方便策划复制地图布点对象的坐标朝向 贴到excel里。
这个其实别人文章里看到的https://blog.uwa4d.com/archives/USparkle_Continuous-optimization.html 我们项目里策划配 怪、npc也需要 坐标的拷贝。 直接获取选中的 坐标和朝向复制到粘贴板就行了。 [UnityEditor.MenuItem("DiBian/CopyXYD %X")] stati...原创 2018-10-31 21:06:54 · 580 阅读 · 0 评论 -
【转】记一次Canvas 设置 overrideSorting 失败
我们项目里也遇到过。 UI的prefab 加载后onEnable里 设置上面canvas的 overrideSorting 没有效果。 原来prefab 加载后已经触发onEnable了, 但此时还没挂载到UI的Canvas下面。https://www.cnblogs.com/pmsl/p/8885640.html以下转发问题描述 GameObject obj = ...转载 2018-10-31 21:09:45 · 3973 阅读 · 0 评论 -
【unity】unity 里访问 java的枚举,及用枚举的函数。
参考了这个:https://stackoverflow.com/questions/29091231/how-to-access-enum-in-unity-androidjavaclass AndroidJavaClass ajc= new AndroidJavaClass("com.umeng.analytics.MobclickAgent$PageMode"...原创 2019-01-11 19:58:53 · 902 阅读 · 0 评论 -
关于Android Studio集成其他插件,遇到 Could not find com.google.firebase:firebase-core 等问题
一个项目,导成gradle 安卓项目后,用Android Studio 打开项目,然后集成一个登录计费SDK。结果编译时,出现一些依赖库找不到比如:Could not find com.google.firebase:firebase-coreCould not find com.facebook.android:facebook-android-sdk:sdk的build.gra...原创 2019-03-26 14:43:38 · 5006 阅读 · 1 评论 -
【Unity】用shader做UGUI字体描边的算法改进
Unity自带的Outline 效率实在太差。找了基于Shader实现的UGUI描边解决方案http://www.cnblogs.com/GuyaWeiren/p/9665106.html效果还不错,overdraw和顶点数都不高。不过方案有2个问题,自己尝试调整了一下, 代码放在这以供参考吧。(注:把ui存储prefab,运行时动态挂到一个canvas上, 这个canvas 如果...原创 2019-03-26 15:55:54 · 12716 阅读 · 25 评论 -
关于UGUI里按钮用动画实现点击缩小后,按住按钮边缘会不停抖动的问题
项目里给很多按钮做了一个 按下缩小的处理。 用Animation做的。测试觉得下面的是有问题的,按住边缘就会不停的抖啊抖:解决方案肯定个旧市, 按钮整体缩放时,点击区域不要缩放。目里已经做了很多UI了,要全部重新制作一套规则不太可能。想到一个方案 按钮父节点下挂一个点击区域, 按钮缩小时,这个区域反比放大。这样对原来UI的改动最小。不过项目里还是有很多这样按钮,需要做一个工具...原创 2019-05-23 15:37:12 · 2371 阅读 · 1 评论 -
Unity C#一些容器使用foreach的GC开销。
测试版本是 Unity5.6.6foreach 遍历一般没问题,不过发现还有gc的开销的地方。关于字典Dictionary,foreach(var key in dict.Keys)会有GC 开销。(访问 .Keys 会有GC开销)用foreach(var kv in dict){ var key = kv.key;则没有GC开销。...原创 2019-05-28 11:11:13 · 888 阅读 · 0 评论 -
【unity】NavMesh 运行时动态添加 OffMeshLink 线。
游戏里 有一些场景内的传送阵, 做寻路时, 之前要美术预埋 OffMeshLink线。 但策划会换位置, 两边就不一致了。想着 OffMeshLink好像可以动态加。 网上没有相关资料, 试了一下是可以的。编辑器下可以动态加, 程序里也基本可以。代码如下。在传送阵的对象上绑一个。 //需要主动加一个寻路跳跃传送线 GameObje...原创 2018-06-09 20:40:25 · 2511 阅读 · 0 评论 -
Unity 接收 IOS 内存不足的事件回调。
1. unity 2017 新版本 https://docs.unity3d.com/ScriptReference/Application-lowMemory.html 直接注册一下事件2. 5.5 左右的 需要自己和IOS关联起来。方法一.用 XUPorter 工具 修改代码让 UnityAppController 发个消息过来。方法二、https://answers.unity.com/...转载 2018-04-04 16:56:05 · 2553 阅读 · 0 评论 -
lua里实现类似宏定义,动态生成代码
其实就是用了 lua 的 loadstring 功能。1.把需要动态生成的代码拼接成为一个字符串 存放到 str里,2. loadstring(str) (注:loadstring 这个只是解析了代码,需要执行一下才会生效)所以一般写成:或者:示例:自己封装一个类似宏的函数, 我这里是定义了一个 register_msg 用来处理接收到的 协议 统一打印出来。 code 内容 相当于一个xxxx.lua文件,文件内容为执行 loadstring(code)() 后相当于原创 2017-02-24 21:13:16 · 11764 阅读 · 2 评论 -
Unity NavMesh寻路检测的bug(或者特性),爬坡卡住问题。(角色高度和网格高度不一致造成)
Unity项目,由于人物移动时一般用摇杆或者方向键控制, 需要有八方向方式控制朝向, 所以没有用 NavMesh Agent, 而是自己控制人物方向移动,然后贴合地面。用了NavMesh.CalculatePath只是用于目标点的寻路, 寻找出路经后自己计算实现移动。实际项目中发现,方向键控制移动后,到了边界碰撞检测后,人物就停在那里。 就算与障碍物很小一个夹角,也会卡在那里,体原创 2017-03-28 09:55:45 · 8413 阅读 · 3 评论 -
[unity] 5.5.2 Standard Specular shader 真机上代码调整半透明无效问题。
项目需要,角色进入草丛要半透明。 已用了 untiy 自带shader (Standard Specular)的Fade 模式。 用代码电脑上调试没问题,结果上了真机就无法半透明。原因是 unity打包时只会打 shader 被引用到的变体。 如果代码里调用 EnableKeyword 来开关宏, 如果对应的变体没有,则就不起作用了。。。先附上 调整透明代码: pu原创 2017-08-19 11:38:27 · 1726 阅读 · 1 评论 -
[Unity] UGUI添加删除子canvas 造成unity闪退 crash 崩溃问题分析。
项目里,为了做引导, 把 需要高亮按钮控件 加上 Canvas GraphicRaycaster 组件,然后设置大的层级。 没想到频繁 造成崩溃。========== OUTPUTING STACK TRACE ==================0x00000001407B9B96 (Unity) GameObject::IsActive0x00原创 2017-07-27 22:05:12 · 3942 阅读 · 0 评论 -
[unity] NavMesh 寻路 贴边走的问题 优化。
NavMesh 寻路出来后, 角色走路很多时候贴着地图的边缘走,很别扭。网上找了一个类似的问题: http://www.manew.com/thread-94163-1-1.html里面方案 也挺适合我们的情况, 没用NavMesh Agent ,而是根据算出来的点 自己移动的。基本解决方案:float radius = 1;Vector3[] pathCorner转载 2017-08-07 12:33:08 · 6936 阅读 · 2 评论 -
unity animator动画融合时的上下半身速度分离控制
游戏中要实现一边走一边攻击, 移动还分八方向的,所以使用了半身混合。Animator 半身混合的处理,可以另外看资料。 简单来说 就是分2层:0层 播放基础移动动作,比如“Run”, 1层设了Mask(配置了上半身节点),weight设1(会完全覆盖0层的上半身动作),播放"Attack"就能满足要求了。不过,策划又有需求,需要玩家移动快时, 脚走路的动画要变快, 但原创 2017-08-30 15:23:59 · 14251 阅读 · 0 评论 -
【unity】GameObject.Find 的性能开销分析
有时需要找根节点下的一些节点。测试了一下各个方法,发现GameObject.Find, 确实慢。有时需要找根节点下的一些节点。测试了一下各个方法。在目前S_Inland场景下,里面节点比较多, 测试 一个脚本,每个查找分别执行100000次开销结果如下:GameObject.Find("CameraForScenes"): 6318000原创 2017-11-11 15:49:30 · 5256 阅读 · 1 评论 -
[Unity]CutScene工具Cinema Suite Rotion 角度不能负数方向旋转的bug修正。
美术使用这个工具做动画时,对一些物体旋转,结果想 y轴方向 从0 往-30° 旋转,结果编辑模式自动会变出来一个 330°的关键帧。。。。完全不是美术预期。研究发现原来 Unity的根本机制, 编辑工具Vector3支持负数,但 赋值给 localEulerAngles,unity自动会换算到 0~360没法处理这里。只能在编辑器,判断是否要插关键帧的代码里做判断。Ci原创 2018-01-04 20:43:15 · 1113 阅读 · 2 评论 -
【unity】编辑模式预览Animator动作,2种实现。 其中一种 playback模式是Cinema Director用的会使Unity Crash
一、环境Unity 5.5.2 、Cinema Director v1.4.5.4 二、问题美术用 Director 做CutScene动画时, 某一个角色动作时间线上,播放多个动作, 预览模式,拖动线的时候,Unity基本会100%Crash如上图拖到类似位置就会闪退(如果一个Track只有一个动作 则不会)有2中Crash:========== OUTP原创 2018-01-06 15:33:42 · 5197 阅读 · 0 评论 -
【unity】 shader的渲染次序 实现,水只倒影 场景,不要倒影角色。
项目里用了个比较简化的水(手机上用的), 角色也会倒影在很远的水面上。因为用了 GrabPass{"_GrabTexture"} 接取相机的数据 再做水面效果的处理。策划希望只过滤掉 角色的影子。本来想换相机 设一下mask 排除角色,用相机的RenderTexture ,网上有些例子就是这样的。http://www.ceeger.com/forum/read原创 2018-01-09 19:15:01 · 2331 阅读 · 0 评论 -
【Unity】用Shader实现图片的区域遮罩,支持半透明,实现地图动态上色功能
一个项目,做世界地图时,希望未开启的地块是线稿,新地块开启时,做一个上色处理。想到的方案就是:上了色的彩图盖在线稿上,然后用mask 控制彩图的局部显隐。网上找了一个,可以半透明遮罩的shader:https://www.jianshu.com/p/1d9d439c28fa要控制不同区块显示或不显示,要怎么处理呢? mask图其实只用到了 alpha,还有rgb2原创 2018-02-07 17:27:28 · 15218 阅读 · 2 评论 -
Unity用程序给Animator控制的某一个动画(AnimationClip)加一个动画事件(AnimationEvent)
Unity 项目,需要对一个玩家拔武器的动作中,实现武器挂点的切换(从背部 挂到手上)。1. 一种方案,动画美术直接编辑动画,定位到要变化挂点的帧(比如24帧),在Events里添加一个动画事件, 名字规范成 TakeWeapon这个方案 优:让美术准确控制帧数, 可以个性化 劣:所有模型该动作都要加一下。方案二,用程序添加网上有animation原创 2016-10-22 14:33:05 · 13350 阅读 · 0 评论