
Unity通用
文章平均质量分 54
Sevol_Y
还可以
展开
-
Unity中UI方案。IMGUI、UIElement、UGUI、NGUI
通过Create->UIToolkit->UIDocument,创建布局文件,双击打开UIBuilder,UIBuilder是UXML和USS的可视化编辑器,让使用者不需要手写布局代码,在编辑器中可以方便做出各式各样的界面。NGUI的最早版本发布于2011年12月份,NGUI可以说是Unity平台最强大的第三方UI系统Unity早期版本(Unity4.6之前),引擎自身的UI系统是很差的,绝大多数项目都是使用的NGUI进行UI界面开发的。官方解释这是一套兼顾。它是独立的UI编辑器,且对美术、策划都友好。原创 2023-06-12 19:07:09 · 6008 阅读 · 1 评论 -
Unity静态合批处理详解
静态批处理的原理静态合批最重要的一件事就是合并网格。在运行前 或是 发布前,场景中相同材质,并且标记为 Batching Static(自动静态合批)或者通过代码调用合并函数(StaticBatchingUtility.Combine手动静态合批)的物体,引擎会把网格信息取出来,之后对网格上的顶点进行空间变换,变换到同一坐标系下,合并成一个新的大网格。形成新的大Vertex Buffer Object(VBO 顶点缓冲对象)和Index Buffer Object(IBO 索引缓冲对象)(这两原创 2023-04-18 16:33:14 · 2230 阅读 · 0 评论 -
Unity -- Material does not have a _MainTex texture property. It is rqured for SpriteRenderer.
在SpriteRenderer上,有时候会提出警告,Material does not have a _MainTex texture property. It is rqured for SpriteRenderer.它的意思是SpriteRenderer材质球shader上,必须有_MainTex属性,如下图,必须要有_MainTex属性。原创 2023-03-27 12:29:50 · 1714 阅读 · 0 评论 -
Unity NavMeshObstacle组件详解
但是如果出现动态的障碍,比如一堵墙原本不能通过,现在又需要通过,这时候就需要用到Nav Mesh Obstacle,这里可能会想到空气墙,但是空气墙使用的是Rigidbody,如果速度过快可能就会出现穿过的问题。表示障碍物移动之后,等待多长时间,变为静止物体,然后去判断一次移动阈值,如果移动阈值不满足,同样不会生效到NavMesh,所以这里就是这个组件自己掌握性能优化的地方。Carve Only Stationary属性不勾选,那么静止时间没用,组件会每帧雕刻,消耗过大,但是移动阈值正常工作。原创 2023-03-16 16:49:21 · 2106 阅读 · 0 评论 -
Unity中动画切换
不太清楚这个值具体表示什么,(测试了一下,如果近1,则直接到目标状态,没有过渡。近0,则有过渡,其他切换参数生效。api切换的优点就是不用连线,直接使用代码切换,并且能够实现过渡效果。缺点就是不直观,并且各个动画过渡参数不一样,可能需要配置。需要连接各个动画的逻辑关系,并且添加切换参数,设置退出时间,调整切换持续时间等。切换到目标动画的位置,例如切换到目标状态的0.5(动画50%处)在unity中,3D模型的切换可以使用animator状态机或者代码切换。切换到目标动画,切换过程需要消耗的时间。原创 2023-02-28 19:31:12 · 2568 阅读 · 0 评论 -
Unity Animator获取当前播放动画片段
这里有一个机制,如果上一句代码是播放一个动画片段,下一句代码立即去获取当前播放片段信息,是获取不到的,需要等待几十ms的延迟,才能正确获取到当前播放片段信息。这是因为动画片段切换有一个切换过渡transition时间。Animator获取当前播放片段,获取错误,跟当前播放的片段不一致的原因。原创 2023-02-22 16:50:01 · 3724 阅读 · 0 评论 -
图片,图集打入ab包的依赖关系、Include in build
我们将ab包解开之后,发现一张图片打成ab包里面包含有1张sprite和一张texture2d,这是因为我们没有打图集,unity自动给我们生成了单张图片的图集,这样不利于ui合批。打包图片未打图集。一个文件夹,n张图片,打入一个ab包,包内有n张sprite和n张图集texture2d。未打图集。多个文件夹,n张图片,打入一个ab包,包内有n张sprite和n张图集texture2d。打图集,一个文件夹,n张图片,打入一个ab包,包内有n张sprite和1张图集texture2d。原创 2023-01-29 17:24:20 · 1531 阅读 · 0 评论 -
Unity AR阴影投射透明地面 仅渲染模型实时阴影 Shader实现
项目有个需求,通过灯光照射,仅渲染模型阴影,相当于接受阴影的地面透明。原理就是使用一个shader,将接受阴影地面透明,并且仅仅渲染阴影。原创 2022-08-02 15:45:36 · 2532 阅读 · 0 评论 -
Unity 使用USB、WiFi连接真机调试 Profiler
亲测可用。发布一个development apk,在buildsetting发布界面,勾选Development build。 usb连接手机,打开调试模式,并且在电脑上使用adb查看是否连接正确(如果遇到adb不是内部或外部命令,直接去找到android sdk/platform-tools文件夹,有一个adb.exe,不用双击,在本文件夹点击shift+鼠标右键选择在此处打开命令窗口),输入adb devices出现类似下图,则设备连接电脑成功。 检查连接端口是否被占用,在cmd里面输入nets原创 2022-04-18 11:26:59 · 6787 阅读 · 0 评论 -
SpriteRender MaterialPropertyBlock used to modify these values
记录一下,给Sprite Renderer赋值sprite之后,在材质球下方有一行警告信息MaterialPropertyBlock used to modify these values官方回答:这是因为 Sprite Render 使用 MaterialPropertyBlock 将 sprite 纹理分配给材质(着色器)。这就是为什么您可以在 Sprite Renderer 上使用不同的精灵,而只需使用一种材质。默认精灵着色器具有隐藏材质上的 _MainTex 属性的标签,因此您无法原创 2022-04-08 15:14:15 · 2230 阅读 · 1 评论 -
Unity 使用Asset Studio查看apk包内资源
unity打包之后,想要查看包内图片,音频等资源,这时候我们就可以用到Asset Studio(以前叫Unity Studio,老软件已经不行了)注意:界面中的Size大小为字节(bytes、B)界面如下图使用方法:将apk使用zip解压,点击File->load Floder->包内assets->bin->Data就行了,注意不要打开Data文件夹,不要让Data的子文件夹获得焦点。 如果想要查看指定ab包,也可以File->load File->选中a原创 2022-04-01 22:07:59 · 12469 阅读 · 0 评论 -
Unity 计算图片真实存储大小(Preview视图)
一张图片导入Unity,真实大小是怎么计算的,记录一下。图片中有分辨率,压缩格式,和大小,这里分别解释一下。分辨率这个应该都知道怎么回事,水平和垂直方向各有多少个像素。这里说一点,看到上方的Max Size 这个设置,指的是这个图片最大的分辨率是多少,例如2048:2048x2048,这个值会影响图片大小,如果图片原始大小为4096x2048,那么这张图片分辨率就会被压缩到2048*1024,使用最大分辨率等比例缩放。 当然如果原始图小于设置的值,例如1000x1000,那么这张图片就不会原创 2022-04-01 21:36:24 · 8100 阅读 · 0 评论 -
Unity 屏幕变灰色 全屏变灰 死亡效果
先看效果图:背景图和按钮等都能置灰理解原理:在相机渲染成像的最后一帧,unity会回调OnRenderImage函数,在回调函数里面,将源Texture加上Shader的混合,输出到新Texture,则成最终屏幕效果。使用步骤:新建材质球,将shader赋值给材质球。 新建c#代码,挂载到Camera上,并赋值材质球。 最后就可以通过调整材质球的Inspector中的属性值,查看置灰效果。(这步可根据自己项目,自行代码控制)。代码部分:Shader代码:Shader "Sev原创 2021-11-17 11:43:08 · 5521 阅读 · 0 评论 -
Unity 接入Appsflyer 发送埋点事件
确认按照官方文档,成功接入appsflyer(可在使用手机连接android studio 查看日志,是否有appsflyer 相关日志) 官网申请devkey,初始化appsflyer AppsFlyer.initSDK(devKey, appID, null); // AppsFlyer.setIsDebug(shouldEnable); // 正式包请去掉debug模式AppsFlyer.startSDK(); 编写发送事件代码,确保代码正确执行 public static v.原创 2021-10-20 12:44:20 · 3723 阅读 · 0 评论 -
Unity接入Firebase的埋点事件
首先保证firebase,按照官方文档正确接入。 编写发送事件代码LogEvent public static void SendFirebaseEvent(string name, Dictionary<string, string> extraInfos) { Firebase.Analytics.Parameter[] firebaseExtraInfos = new Firebase.Analytics.Parameter[0];原创 2021-10-20 12:30:44 · 3645 阅读 · 0 评论 -
Unity 给Sprite Renderer添加Event Trigger 点击事件
首先,想要通过鼠标触发Box Collider、Box Collider2D,需要通过射线触发。接下来我们给对应物体加上组件。新建一个Sprite Renderer,同时加上Box Collider2D,根据需要调整自己的触发范围。因为要添加点击事件,所以加上一个Event Trigger组件,然后选择Pointer Click事件 再就是发射射线,我们肯定使用过以下代码,发射过射线。 if (Physics.Raycast(ray, out rayHit, 10000)) 但是.原创 2021-09-11 10:28:46 · 4385 阅读 · 1 评论 -
Unity 接入Google异常 File google-services.json is missing
因接入的Firebase,打包异常FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:processDebugGoogleServices'.> File google-services.json is missing. The Google Services Plugin cannot function without it. Searched Locat原创 2021-09-09 19:57:27 · 2889 阅读 · 0 评论 -
Unity Android获取keystor SHA1方法
方法1 --通过Android Studio编译器获取SHA1打开Android Studio的Terminal工具 输入命令:keytool -v -list -keystore keystore文件路径 输入Keystore密码方法2 --使用 keytool(jdk自带工具)获取SHA1找到keystor所在文件夹,Shift+鼠标右键,在此处打开命令窗口 输入命令为: keytool -list -v -keystore 自己的名字.keystore 提示输入密钥库密码,编...原创 2021-09-03 16:51:18 · 674 阅读 · 0 评论 -
Unity 跳转GooglePlay 谷歌商店 应用商店
咱们游戏在做整包更新的时候,如果让玩家自行去商店,会流失很多用户,往往就需要引导玩家跳转商店,如果不指定商店跳转,就会跳转到手机默认应用商店。跳转各个平台的应用商店方法如下: //JumpMarketShop("包地址", "应用平台"); //GooglePlay JumpMarketShop("com.google.android.xxx", "com.android.vending"); public static void Jump原创 2021-09-09 11:20:47 · 2146 阅读 · 0 评论 -
Unity File.Create() 报错 Opening file Failed 另一程序正在使用此文件
在使用Unity IO 创建文件的时候单独写 File.Create(path) 会报错 显示Opening file failed 领一个程序正在使用此文件,进程无法访问是由于File.Create(path)会返回FileStream对象,由此方法创建的 FileStream 对象需要在使用完成后,释放文件流资源.实现IDisposable接口的都需要释放,释放非托管资源.解决方法一:File.Create(path).Dispose();或者File.Create(path原创 2020-08-05 15:20:53 · 3428 阅读 · 0 评论 -
unity 使用BMFont 制作自定义字体
unity cocos 使用BMFont,生成自定义字体1.BMFont下载地址http://www.angelcode.com/products/bmfont/2使用步骤转载至https://blog.youkuaiyun.com/keshuiyun/article/details/9960667转载 2020-07-14 14:36:59 · 540 阅读 · 0 评论 -
Unity 平台,版本,预编译指令
Unity平台UNITY_EDITOR 编辑器调用。 UNITY_STANDALONE 独立的平台(Mac,Windows或Linux)。 UNITY_STANDALONE_OSX 专门为Mac OS(包括Universal,PPC和Intelarchitectures)平台的定义。 UNITY_STANDALONE_WIN Windows。 UN...原创 2019-03-28 11:34:08 · 1008 阅读 · 0 评论 -
Android 6.0 ContextCompat中不包含CheckSelfPermission异常情况
以下亲测!异常:java.lang.NoSuchMethodError: No static method checkSelfPermission异常:ContextCompat中不包含checkselfPermission异常有以下两个方面(1)sdk版本<23 使用 PermissionChecker.checkSelfPermission,进行权限验证sdk版...原创 2019-03-27 16:39:17 · 2695 阅读 · 0 评论 -
unity3D SystemInfo类
UnityEngine.SystemInfo类中的属性都是只读属性,存储着运行平台的一些硬件信息,找出底层平台和硬件的功能,如:设备的名称、设备的类型、显卡的类型,显卡的名称、显卡供应商(制造商)、系统内存大小、显存大小、支持的渲染目标数量等等。我们也可以检查支持哪些RenderTexture(渲染纹理)格式(SupportsRenderTextureFormat),CPU有多少可用的线程的...转载 2019-03-26 09:41:25 · 504 阅读 · 0 评论 -
Unity 保证设备唯一标识符 SystemInfo.deviceUniqueIdentifier 出项相同值 坑
以下亲测!设备保证唯一性,之前使用Unity 的SystemInfo.deviceUniqueIdentifier来实现,最近项目发现部分用户产生相同的标识符。查找问题,发现SystemInfo.deviceUniqueIdentifier是依据硬件信息,然后通过算法得到的设备唯一码,重复的可能性通过项目发现有1/00的重复率。研究一下,发现没有一个完全唯一的标志符,网上说的IMEI,...原创 2019-03-29 14:44:35 · 15370 阅读 · 2 评论