![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
rrtt_2323
d=====( ̄▽ ̄*)b
展开
-
在 Unity 中获取 Object 对象的编辑器对象
现在不想挨个在 Inspector 上都点一遍按钮,所以就需要能获取到它们的编辑器对象。有这个需求的原因是,在编辑器的 Inspector 逻辑中,写了许多生成逻辑。如果我们想扩展 Unity 的原生组件,也可以借助这个方法来实现。原创 2023-12-27 17:07:12 · 883 阅读 · 0 评论 -
GLSL: Shader cannot be patched for instancing.
最近在 unity 里碰到了这么一个错误,只有这么点信息,让人看着挺懵逼的,后来发现,是因为 unity 的 terrain 组件在设置里勾了 Draw Instanced 选项导致的,感觉应该是 unity 的 bug。因为错出在 2021,2022就没这个问题,如果你也碰到了,且没法换版本的时候,可以尝试这么去搞一下。原创 2023-11-16 14:15:07 · 282 阅读 · 0 评论 -
记录一下解决 Unity A Native Collection has not been disposed 错误的要点
然后我们就可以发现,出错的地方在 UnityWebRequest 上,经过一通查询,发现最多的说法是,申请的 request 没有回收导致的内存泄露,解决方法很简单,就是添加一下 using 关键字。第一步先说怎么定位有问题的地方,Unity编辑器其实有一个隐藏的内存泄露检测模式的功能,可以把这个错误的所在堆栈给打印出来,这里提供一段代码来启用这个功能。我们有的时候,会设置自己的 uploadHandler ,但是不设时,request 自己原本也有一个的,它就不会被释放了,自然是要泄露了。原创 2023-07-11 10:57:37 · 1788 阅读 · 1 评论 -
怎么在unity的linear颜色空间下,显示gamma颜色空间的ui
其实搞这个项目是没啥意义的,毕竟真把纹理从gamma转到linear下也是很容易的,但是。。。。。。我乐意呀!!!我就是想44能不能这么干,在ps里过渡纹理的颜色空间,可以看我上一遍的文章:怎么在 PhotoShop 里把在 Gamma 颜色空间画的图,转换到 Linear 颜色空间下_勥小透明的博客-CSDN博客每个项目总会有一些因为历史问题遗留下来的坑,就比如有一大批的 ui 贴图都是在 ps 的 gamma 颜色空间下画的,很多很多。。。。。。现在需要把工程转到 Linear 颜色原创 2022-04-06 16:30:45 · 3008 阅读 · 0 评论 -
unity android 打包报错 Targeting S+ (version 31 and above)...
完整报错应该类似下面这样:Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present]unity 配 Android Studio 2020.3 的版本是真滴难用,打包时竟是一些会卡你一下的小问题。。。这个是用 Android 12 SDK 打包导致的,是12的新特性,用来标记当前Activ原创 2022-03-29 12:03:21 · 10512 阅读 · 0 评论 -
关于 Alpha is Transparency 到底需不需要勾的最终结论
结论当然是需要勾的!原因要从透明混合模式说起,我们知道 unity shader 里有2种透明混合模式Blend SrcAlpha OneMinusSrcAlpha // 传统透明度Blend One OneMinusSrcAlpha // 预乘透明度传统透明模式颜色混合正确是有前提的,就是做混合的目标,它是不透明的,也就是alpha=1。不透明物体的有效颜色即其颜色本身。如果有那种半透明的情况,就是 alpha 在 0~1 之间,其实结果可能是不正确的,最直接表现就是,在混合结原创 2022-03-17 12:34:14 · 5295 阅读 · 0 评论 -
漫画中的速度线
偶然间看到的这个做法,当然不止可以用来表现速度线,甚至可以拿来当 Noise 用。效果如图Shader "Custom/ComicSpeedLine"{ Properties { _MainTex ("Texture", 2D) = "white" {} _LineCount ("线的数量", float) = 0 } SubShader { Cull Back ZWrite On原创 2022-02-26 23:16:08 · 734 阅读 · 0 评论 -
unity中的缓动插值曲线,Easing Curves的那些事
关键时刻,需要时总是找不到,备份一下http://robertpenner.com/easing/easing_demo.html原创 2019-10-16 14:21:04 · 1810 阅读 · 1 评论 -
在 Unity 编辑器中,打开一个用来显示网页的工具窗
最近发现 unity 在底层库里,真的藏了好多有趣的功能呀,比如下面这个using System;using System.Reflection;using UnityEditor;public class TestEditorCode{ [MenuItem("Tools/测试用编辑器窗口开网页")] private static void OpenWindow() { string Url = "https://www.bilibili.com/";原创 2022-01-27 11:30:51 · 4021 阅读 · 0 评论 -
在 unity 中,用代码调用 MenuItem 菜单的方法
总是到了需要用的时候找半天,干脆记录一下EditorApplication.ExecuteMenuItem("");原创 2021-10-06 17:35:45 · 1225 阅读 · 0 评论 -
实现一个有衰减的 Planar Shadow
参考:https://blog.csdn.net/weixin_30852451/article/details/99766398先写一个2个pass的shader/*如何求顶点投影到平面上的点(阴影点)当平面上取不相等的任意两个点组成一个向量,与平面的法线总是垂直的,向量垂直点乘为0,因此可以通过一个点和一个法线来定义,plane方程如下:( P - P0 )·N = 0,N=normal,P0表示平面上的一个点,P表示平面上的任意点,当P = P0时 0·N = 0射线方程 P = o +原创 2021-03-25 21:02:03 · 263 阅读 · 0 评论 -
在Mac系统上,Rider连接Svn失败,报错:The subversion command line tools are no longer provided by Xcode
其实这个错误的意思就是,Xcode 没有给我们提供 Svn 的命令行工具。多见与 Xcode 自动升级了,它更新安装完,默认是不装命令行工具的。所以这就需要我们手动来一下。打开控制台,然后输入xcode-select --install执行命令,如果安装了会显示 command line tools are already installed。没装就是弹出提示窗让你装,剩下的就一路按照...原创 2020-03-25 18:54:43 · 3466 阅读 · 6 评论 -
判断点是否在多边形中的方法
这2个都只适用于不考虑y的情况public static bool IsPointInPolygon(Vector2 point, IReadOnlyList<Vector2> polygon) { int polygonLength = polygon.Count, i = 0; bool inside = false; f...原创 2020-03-19 23:48:25 · 378 阅读 · 1 评论 -
Mesh顶点坐标转换到世界空间的方法
其实特别简单,先找到 Renderer 所在的 transform,用它上面的transform.TransformPoint(point); 方法,就可以把在本地空间的坐标转到世界上来了。之前不知道,这个方法竟然也适用于Mesh顶点...原创 2020-03-19 23:42:18 · 1767 阅读 · 0 评论 -
实现 ugui 中 Mask 组件的反向功能
我们都是到 ugui 里,官方给我们提供了一个 Mask 组件,用来实现显示一些特殊形状的ui,但是有的时候,我们刚好需要和它作用完全相反的功能实现一些效果。这里说一个即不需要改shader,还很简单的方法,聪明的你肯定也已经想到了。对,既然Mask除了和我们要的扣图方式是反的外,好像基本实现了我们所有的需求,由此,经过观察Mask组件和与其配合的Image组件后发现。Image 的父类里面...原创 2020-02-05 01:32:14 · 1987 阅读 · 2 评论 -
获取两个向量a,b之间的夹角的几种方法
获取两个向量a,b之间的夹角的几种方法方法1:通过两个向量的法向量的点乘的反余弦获取弧度,然后通过弧度获取角度rad = Mathf.Acos(Vector3.Dot(a.normal,b.normal))ang = rad * Mathf.Rad2Deg方法2:通过两个向量的法向量的叉乘的模长的反正弦获取弧度,然后通过弧度获取角度rad = Mathf.Asin(Vector3...原创 2019-11-29 13:42:55 · 7295 阅读 · 0 评论 -
unity 遍历 go 的一些方法
// 能找到所有的root go节点GameObject[] allGos = UnityEngine.SceneManagement.SceneManager.GetActiveScene().GetRootGameObjects();// 找不到隐藏的goGameObject[] allGos = (GameObject[])UnityEngine.Object.FindObjectsO...原创 2019-09-10 17:57:14 · 477 阅读 · 0 评论 -
unity 开源代码地址
最近 unity 开源了的东西是真的多,惊了bitbucket 上的仓库,有不少支持团队专门为大客户定制的工具,也有些源码什么的 https://bitbucket.org/Unity-Technologies/github 上的仓库,非最新版本的引擎源码 http://forum.china.unity3d.com/thread-31728-1-1.html https://git...原创 2018-05-04 11:10:32 · 4777 阅读 · 0 评论 -
解决因第三方sdk,unity打包出来的apk在android 5.0以下矢量图兼容问题的崩溃
android一直以来,对往下低版本的兼容做的就不好,而且工具流没事还总变,搞起来真的是让人秃头 android 5.0 以后开始能使用矢量图的图标了,但是5.0以下没这个功能呀,所以你在编译的时候,需要增加一个编译参数和静态声明来兼容这个问题。 一般这个步骤是在 android studio 下面完成的,对于开发纯粹的 android 项目来说,没什么难度,都有比较完善的解决方案。 举例:...原创 2018-05-10 11:01:47 · 1581 阅读 · 0 评论 -
在mac上配置CMake,并编译FlatBuffers
公司项目原本基础架构是用json格式来传递数据,但是这个东西有个挺严重的问题,就是需要解析,然后项目本身与服务器需要进行大量的通讯(频率很高,大概30hz吧),这个解析就非常的拖性能了,而且当前的json库,好像每次都得new对象,产生gc,然后就发现了FlatBuffers这么个玩意。 它是google员工在业余开发的一个玩意,具体去百度就好了。 它的特点呢,就是虽然数据也是2进制传输的,但...原创 2018-03-26 00:50:00 · 2711 阅读 · 0 评论 -
unity ugui 与不同屏幕进行像素适配的问题
unity的ugui其实严格意义上是不需要我们去进行适配的,它确实帮助我们做了很多很多的工作,我们只要简单的拖拉几下就可以搞定适配的问题(这点在比ngui强了不是一点半点,不愧是unity提供的从底层开始的解决方案)。 但是总是会有那么些特殊的蛋痛需求,还是需要让我们来考虑适配的问题的。 假设我们要做一个类似iphone的AssistiveTouch悬浮窗时,这个东西有个特点,那就是它不能出屏,原创 2016-08-15 11:45:01 · 6531 阅读 · 0 评论 -
unity 中使用 WWW 类读取 StreamingAssets 目录的路径问题
外网的话,没有什么特别的地方,就是用 WWW 去访问 http 就好了~ 需要注意的是本地,在不同平台下 url 的格式会略有不同。editor 和 ios 在读取本地的时候,地址都需要加一个头: file:// 注意,就算你是用 Application.streamingAssetsPath 读取到的路径一样也需要+这个头例: editor上类似这样 file://C:/Users/原创 2016-08-25 12:03:35 · 10193 阅读 · 0 评论 -
分享一个我用的 unity 日志系统
我们在开发中,往往会觉得unity自带的日志系统不是那么好用,比如,不能筛选日志,不能打印在屏幕上,想生成自己的日志文件,等等等等的需求,这时候就需要自己来扩展编辑器的相关功能了。 我这里实现的需求比较简单,就是给日志加了个key,可以根据这个key来对暂时不需要显示的日志进行过滤,还有就是将我们的日志打印到屏幕上去。打印屏幕的类参考了由 Jeremy Hollingsworth 和 Simon原创 2016-09-03 23:14:17 · 5213 阅读 · 0 评论 -
Unity3D Android 真机调测 Profiler
分享几个文章,大家基本照着做就好了http://www.ceeger.com/Manual/Profiler.html http://www.ceeger.com/Unity/Doc/2014/Unity3D_Android_SDK_Install.htmlhttp://blog.sina.com.cn/s/blog_5b6cb9500101ehz0.html这里稍微想说这么2句: 这里想通确实原创 2016-08-02 14:51:54 · 999 阅读 · 0 评论 -
protobuf-net 将 .proto 文件转换成 .cs 文件的方法
首先转换 .proto 文件一般会用到2个 .exe 文件,一个是 protoc.exe (这个能生成c++的文件,java好像也行,我没试),一个是 protogen.exe (这个能生成我们需要的.cs文件),首先我们先来下载它们。 注意:这2地址都需要vpn翻墙,科学上网,毕竟是google开发的东西。protoc.exe 的下载地址: https://developers.google.原创 2016-07-15 17:44:15 · 2366 阅读 · 0 评论 -
unity 将 .prefab 转换为 txt 格式
我们知道 .prefab 文件在unity引擎中,扮演着一种配置文件一样的作用,用它将多个组件关联在了一起,组成了一个整体,但是它默认是一个二进制文件,我们是无法观察它里面的信息的。 今天终于在偶然的机会里发现了一个让我们可以自己看看这个配置文件里写的到底是什么的方法。方法1: 运行Unity安装目录下的binary2text.exe文件(“C:\Program Files (x86)\Unit原创 2016-06-02 00:54:21 · 6874 阅读 · 0 评论 -
mono中的内存泄漏和WeakReference(弱引用)的使用
我们大家有时候在做 unity 项目的时候,游戏后期最常见的问题,应该就是内存泄漏了。 其实这里面有一些小细节,就可能在你不知不觉间导致内存泄漏的发生。 这里说说释放对象时容易发生的问题。先来看一段代码: private float m_countdown = 10; private bool m_turnOn = false; TestB m_tb; Te原创 2016-05-26 02:32:16 · 5864 阅读 · 3 评论 -
Unity3d的批渲染 batch rendering(转载,为了方便自己看,记忆的)
原博客:http://blog.csdn.net/leonwei/article/details/41942157批渲染(Batch)batch render 是大部分引擎提高渲染效率的方法,基本原理就是通过将一些渲染状态一致的物体合成一个大物体,一次提交给gpu进行绘制,如果不batch的话,就要提交给很多次,这可以显著的节省drawcall,实际上这主要节省了cpu的时间,cpu从提交多次到提交转载 2016-03-31 01:15:24 · 2006 阅读 · 0 评论 -
unity 中将c#打包成dll中,需要注意的地方
一般意义上的把纯c#打包成dll的流程就没有什么好说的了,就是新建一个c#类库项目,写好代码,直接编译就好了,唯一需要注意的就是在编译的时候,记得选择的目标框架版本不要太高,unity当前支持的最高版本好像是到 .net3.5。 还有就是尽量能选 Client Profile 就选一定选它,这个选项的意思就是精简版的库。 选它带来的好处有2点: 1,你的包更小了(精简嘛,所以东西少) 2,原创 2016-08-25 14:24:00 · 12061 阅读 · 0 评论 -
让不可见的UGUI组件,只响应Raycast但是不参与GPU绘制的方法,有效降低OverDraw的产生
张博士他们搞的那个UWA公司在对unity的性能优化方面确实是6的不行呀,分享了好多很棒的方法呀。原文地址,主要分享了2个降低ugui填充率的方法:http://blog.uwa4d.com/archives/fillrate.html我们一般会做一些不可见的ugui组件,用来屏蔽在它后面的ui窗口的操作,但是这样的窗口其实也是会参与绘制的,这样的窗口多了以后,就会导致Overdraw的上升,降低效原创 2016-12-22 23:37:33 · 3931 阅读 · 2 评论 -
关于 unity 中颜色空间问题的总结
首先官方文档肯定是我们参考的重点,最重要的就是这几篇文章了: https://docs.unity3d.com/Manual/LinearLighting.html https://docs.unity3d.com/Manual/LinearRendering-LinearOrGammaWorkflow.html https://docs.unity3d.com/Manual/LinearR原创 2018-01-10 18:35:03 · 2804 阅读 · 0 评论 -
UGUI 字体背景尺寸自适应
在UGUI里,我们有时需要做类似对话框这种东西,还需要对话框可以随着里面文字多少,行数的变化,进行拉伸变化。我第一时间想到的解决方案是自己计算对话的char长度,然后动态的去修改背景图的尺寸,这种方法乍看之下没有任何问题,但是在实际应用中,发现有致命的缺陷。 那就是当对话的文本可能是多语言的时候,妈卖批呀,不同的语言下一个字符的尺寸都是不同,更何况有的字体可能还有别的什么特殊设置。 所以这时我们原创 2017-11-08 17:00:58 · 3585 阅读 · 1 评论 -
unity ping 一个服务器 ip 的工具类
最近公司需要对服务器进行速度侦测,而不依赖于服务器返回的时间戳,所以需要使用 unity 自带的 ping 类。这里提供一个现成的工具类:using UnityEngine;using System.Collections;public class UnityPing : MonoBehaviour{ private static string s_ip = ""; privat原创 2017-05-25 01:35:18 · 5645 阅读 · 4 评论 -
spine unity 运行库简单基本使用指南
说是写个指南,其实是想吐槽。。。 官方运行库文档真的辣鸡的不行,它的说明文档看着写的挺全的,结果都是过时的了,里面提的api大部分根本就找不到!官方文档:http://zh.esotericsoftware.com/spine-unity但是我们又不得不用不是,所以就要自己翻它代码,找真正能调用的api了,这里推荐还是看一看它的官方文档,可以至少让我们对它的架构思路有一定的理解,方便快速分析它的真原创 2017-04-21 11:17:55 · 8729 阅读 · 2 评论 -
unity ios 因为 trampoline 容量不足导致的闪退问题
参考文章: http://www.cnblogs.com/j349900963/p/4225507.html http://www.cnblogs.com/flowwind/p/3320596.html官方文档: https://developer.xamarin.com/guides/ios/troubleshooting/troubleshooting/有时候你的 app 会莫名其妙的崩溃转载 2017-04-06 15:59:39 · 2522 阅读 · 0 评论 -
unity 下载纹理,并设置成指定的尺寸
最近有个需求,就是要从 facebook 上下用户的头像,然后还要给他转成指定的尺寸。好给ui显示使用。最开始我以为这样就行了,2333Texture2D t2d = new Texture2D(100, 100, request.format, false);www.LoadImageIntoTexture(t2d);结果发现设的那个尺寸根本没有卵用。。。www还是会按全尺寸下载纹理的,这就很尴原创 2017-03-19 14:42:32 · 4234 阅读 · 0 评论 -
Xamarin Studio 折叠代码设置
在 visual studio 习惯了把方法的 { } 折叠起来,但是 Xamarin 默认是不折叠的,这里说一下设置的方法。如图所示,把响应的选项点上就好了。ps:最近也把vscode的环境也搭建了起来,用起来感觉也还不错,但是vscode,Xamarin各自都有优点和缺点,现在纠结到底用谁中~原创 2017-02-22 09:49:16 · 913 阅读 · 0 评论 -
在mac上为unity开发安装xamarin studio
最近有了那么个契机,有机会把自己的工作平台从windows上转移到了mac上,一开始我是忐忑的,因为mac上做unity开发是没有像visual studio这样的神器呀! 直到我知道了 xamarin studio!这玩意是 MonoDevelop 的一个分支,也就是说它2是一个妈生的,不过 Xamarin 是商业化版本,最近还被微软给收购了。 它比 MonoDevelop 颜值要高(谁让这是原创 2017-02-20 23:50:43 · 3587 阅读 · 0 评论 -
unity3d 在2D空间中让一个点注视另一个点
最近用unity3d在写一个小功能时遇到的问题,就是在2D空间里,怎么让一个点注视另一个在空间里的点。 效果跟unity在3D空间里提供的一个方法叫 transform.LookAt(target); 类似。lookat 有个挺不爽的地方,比如我想让一个点以插值移动的方式朝向另一个点,这个插值的角度没法控制,lookat会直接朝向那个点,就没插值的效果了,而且也无法判断出往哪个方向旋转最快。 然原创 2016-02-12 19:44:51 · 3825 阅读 · 2 评论