![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
MonoBehaviour
这个作者很懒,什么都没留下…
展开
-
清除Material中的冗余资源
由于Unity的一个问题,导致Material中替换过的贴图,使用GetDepenecicies方法时会把替换掉的就资源也引用到。替换方法:public static void CleanMaterialSerializedProperty(List<Material> mats, ref string content) { for (int j = 0; j < mats.Count; j++) { if (mat原创 2022-05-17 16:00:47 · 527 阅读 · 0 评论 -
资源导入后处理FBX中Animation的修改
修改的前提是设置ModelImporter 中importCameras = true;然后增加动画属性:未修改前FBX中的Animation修改后FBX中的Animation:代码:public class ModelAnimationTool : AssetPostprocessor{ private void OnPostprocessModel(GameObject obj) { AnimationClipProperty(asse..原创 2022-01-25 20:28:46 · 2203 阅读 · 0 评论 -
draw call 理解和优化
draw call是openGL的描绘次数(directX没怎么研究,但原理应该差不多) 一个简单的openGL的绘图次序是:设置颜色→绘图方式→顶点座标→绘制→结束。 每帧都会重复以上的步骤。这就是一次draw call 如果有两个model,那么需要 设置颜色→绘图方式→顶点座标A→绘制→结束。 设置颜色→绘图方式→顶点座标B→绘制→结束。 两次draw calls; 也就是说在openGl绘制前,如果色彩通道(color filter),绘图方式(sha.转载 2021-03-25 23:07:39 · 2040 阅读 · 0 评论 -
Unity中ShadowMap动态阴影的实现
具体的实现如下:1,生成ShadowMap2,根据ShadowmMap实现阴影的绘制ShadowMap的生成:v2f vert (appdata v) { v2f o; o.vertex = mul(unity_ObjectToWorld, v.vertex); float3 normal = normalize(mul(v.normal, unity_WorldToObject));原创 2021-03-16 20:02:24 · 926 阅读 · 1 评论 -
Unity资源加载与释放-AssetBundle
AssetBundle 与 Resources的区别Resources相当于Unity一个缺省的AssetBundle。AssetBundle可以在使用时动态加载。Resources.load();在没有第一次Instantiate之前没有完全加载Asset资源。所以相对AssetBundle去实例一个资源,Resources会在第一次Instantiate时出现卡顿现象。AssetBundle 加载与释放AssetBundle的加载方式有:AssetBundle.LoadFromFile原创 2020-12-15 15:22:57 · 1207 阅读 · 0 评论 -
C#中Dictionary<TKey,TValue>排序方式
C#中Dictionary<TKey,TValue>排序方式按照Dictionary的Key值 升序排序(OrderBy)、降序排序(OrderByDescending):using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CSharp中Dictionary排序方式{ [Se转载 2020-11-20 11:12:47 · 656 阅读 · 0 评论 -
Unity Shader中的multi_complie和shader_feature
一,multi_complie 还是 shader_featureshader_feature 和 multi_complie 是两个很相似的预编译指令,在Editor模式下,他们是几乎没有区别的。共同点是:声明Keyword,用来产生Shader的变体(Variant)#pragma multi_compile A B//OR #pragma shader_feature A B//-----------------------A模块----------------------#i原创 2020-11-13 15:12:45 · 461 阅读 · 0 评论 -
Unity Android平台的版本不对
MissingMethodException: bool UnityEditor.PlayerSettings.get_useSecurityBuild()unity 安装的是海外版的,Android安装的是国内版的,导致打包报错,安装海外版的Android平台之后,打包正常原创 2020-09-10 11:07:21 · 2146 阅读 · 0 评论 -
减少ShaderLab大小方案
主要作用就是减少ShaderLab的大小,如下图,大概能减少30M左右的内存。直接上代码:private static void ReplaceStandard() { dicReplaceMat = new Dictionary<string, List<string>>(); //替换所有fbx下material的shader string type = "*.fbx";原创 2020-09-07 11:31:05 · 305 阅读 · 0 评论 -
Unity MeshRenderer 渲染排序问题(SortingLayer与order in layer的设置)
Unity中我们需要区分Layer(LayerMask),SortingLayer,SortingOrder他们的区别。Layer是Unity中方便在Player设置碰撞检测(如下图),还有就是方便Camera挑选显示各个层级(UI层,特效层,Player,NPC等,如下图),最多只能设置32个。SortingLayer是控制渲染的层级的,SortingOrder是控制层级中显示的顺序,是属于SortingLayer的。 3d项目中,如创建一个cube,在Inspe...原创 2020-08-31 14:38:57 · 5662 阅读 · 1 评论 -
HashSet资源管理中的使用
废话不说,直接上代码:public const string NoDepTypeFilter = "t:Model t:ShaderVariants t:Scene t:Prefab t:Shader t:Material t:AnimationClip t:Texture t:AnimatorController t:Font t:TextAsset t:ScriptableObject";string[] filter = new string[]{".meta",".cs",".shader原创 2020-08-20 16:10:31 · 185 阅读 · 0 评论 -
模板测试的细节
1、简介在Unity中一个像素会有多个缓存信息,模版缓存(其实Stencil不应该被翻译成模版,但网上都这么写)是其中之一。模板缓冲区可以为屏幕上的每个像素点保存一个无符号整数值,通过一些比较来改变当前像素区域模版缓冲的值,从而改变深度关系,似乎UGUI的Mask也是通过其实现的,延迟光照中Stencil有一些限制,具体看unity的文档,这里只介绍正向光照中的使用。Stencil所在的渲染管线中的顺序位置:Stencil的所有参数如下:Stencil{ R...原创 2020-08-12 17:18:37 · 322 阅读 · 0 评论 -
随机获取圆内点
System.Random random = new System.Random(1000);//半径随机 ,弧度随机public Vector2 GetCirclePoint(int m_Radius){//随机获取弧度float radin = (float)GetRandomValue(0, 2 * Mathf.PI);float x = m_Radius * Mathf.Cos(radin);float y = m_Radius * Mathf.Sin(radin);Vector2原创 2020-07-28 20:54:57 · 712 阅读 · 0 评论 -
unity判断一个物体是否在正前方或者左右
1.点积对于n维度代数定义:几何的定义:a·b=|a|*|b|*cos<a,b>1.1关于它的公式而判断两个物体的位置 关系,是可以通过 这个 cos<a,b> 来判断,知道了这个余玄值,就可以知道 这个角度了。它在Unity中 调用是通过Vector3.Dot(),Unity中使用的也是代数公式 public static float Dot(Vector3 lhs, Vector3 rhs) { retu...原创 2020-07-23 22:09:53 · 3790 阅读 · 0 评论 -
内存是手游的硬伤——Unity游戏Mono内存管理与泄漏
测试开发者的共同关注!WeTest导读内存是游戏的硬伤,如果没有做好内存的管理问题,游戏极有可能会出现卡顿,闪退等影响用户体验的现象。本文介绍了在腾讯游戏在Unity游戏开发过程中常见的Mono内存管理问题,并介绍了一系列解决的策略和方法。无论是游戏还是VR应用,内存管理都是其研发阶段的重中之重。然而,90%以上的项目都存在不同程度的内存使用问题。就目前基于Unity引擎开发的移动游戏和移动VR游戏而言,内存的开销无外乎以下三大部分:1.资源内存占用;2....原创 2020-07-16 00:48:29 · 402 阅读 · 0 评论 -
CacheServer搭建
1.安装配置环境下载Node.js 官网链接:Node.jsnodejs.org2.安装node.js并检查是否安装成功安装完成后,打开windows 终端,输入 "node -v" 字符串,若安装成功则显示所安装node的版本号3.安装cache server安装教程:https://github.com/Unity-Technologies/unity-cache-server在node.js环境上通过注册表安装打开windowns 终端 输入: "npm ins.原创 2020-05-22 21:38:02 · 992 阅读 · 0 评论 -
Texture ASTC转换ETC
传统方式修改是通过TextureImporter的方法,先把Texture加载出来再修改,但是这样的话很浪费时间;我的方法是直接修改Texture的.meta文件,速度比之前的快一倍。[MenuItem("Assets/设置文件夹以及子文件夹下面的图片压缩格式为ETC", priority = 0)] static void AutoSetASTC() { D...原创 2020-04-10 15:54:42 · 796 阅读 · 0 评论 -
如何判断手机是否支持ASTC格式的贴图
Unity中SystemInfo中封装的有个SupportsTextureFormat的方法,直接调用这个方法就可以获取结果。代码如下:public bool ISSupportASTC() { bool isSupport = false; for (TextureFormat i = TextureFormat.ASTC_RGB_4x4; i...原创 2020-04-04 15:12:32 · 4959 阅读 · 0 评论 -
Prefab保存
获取场景中所有的特效,然后检查所有的ParticleSystem中的Prewarm是否打开,如果打开的话关闭,最后保存Prefab。就是这样的一个简单功能。代码如下:public static void ModifyParticle() { ParticleSystem[] ps = FindObjectsOfType<ParticleSystem>();...原创 2020-03-25 16:14:03 · 1007 阅读 · 0 评论 -
Xml配置文件的保存以及读取
这种格式的xml配置文件的读取和保存为例。1,保存private static string path = Application.dataPath.Replace('\\', '/'); private static string projectPath = path.Substring(0, path.LastIndexOf('/'));private static s...原创 2020-03-02 15:31:12 · 394 阅读 · 0 评论 -
Unity将来时:IL2CPP是什么?有了Mono为什么还需要IL2CPP?
https://zhuanlan.zhihu.com/p/19972689转载 2019-10-02 13:56:45 · 652 阅读 · 0 评论 -
查看Unity中,某shader被那些Material引用,并打印到Txt上
写了一个用于搜索项目中某一个shader被绑定到哪些material上,右键点击Project上中任意对象,只有点击到shader文件的时候,SearchShader才会触发。我们把该脚本放在Editor中。基本思路是:首先在右键点击一个对象,当该对象为Shader文件的时候,SearchShader函数可以响应,然后再一个固定的文件夹中遍历该文件夹中的所有Material对象,然后把这些Ma...原创 2018-11-08 20:12:02 · 4680 阅读 · 0 评论 -
Shader对于边缘的描绘,以及缩小和放大的时候,对于边缘的shader不受影响
以上分别是摄像机远近距离看的时候。Shader代码如下:Shader "Unlit/ToonShader" { Properties{ _Color("Color Tint", Color) = (1, 1, 1, 1) _MainTex("Main Tex", 2D) = "white" {} _Ramp("Ramp Texture", 2D) = "white&qu原创 2018-09-14 19:30:53 · 1083 阅读 · 0 评论 -
Unity编辑器(Editor)的问题全解以及使用
最近写了一个Unity优化工具,主要是搜索某一个文件夹中所有的场景和预设。如果是场景的话,就遍历场景中的所有对象,观察对象身上是否绑定了AudioListener组件,如果有的话移除该组件并保存场景。如果是预设的话,就遍历预设中的所有对象,观察预设中的对象是否绑定AudioListener组件,如果有的话移除该组件。脚本如下:using UnityEngine;using System...原创 2018-08-10 19:07:53 · 9435 阅读 · 0 评论 -
unity中如何把一个特效放在两张图片之间???
首先在一个Canvas中在创建2个Canvas节点,然后把2张图片分别放在两个节点中这是2个Canvas;这是两个Image,然后再设置Canvas,控制Camera的显示层级:最后编写代码:using System.Collections;using System.Collections.Generic;using UnityEngine;public class ...原创 2018-07-16 17:04:23 · 2759 阅读 · 0 评论 -
本地/网页上的图片,利用Image查看的方法
1,创建RawImage/Button/Tips。RawImage用来显示获取的图片,Button,点击之后显示下一张,Tips,获取图片缓冲的时候显示的一张遮罩图。2,开始编写脚本public class LoadImage: MonoBehaviour{public Button btn;public RawImage rawImage;public GameOb原创 2018-01-17 16:59:36 · 2450 阅读 · 0 评论 -
Unity中Lerp的用法
Lerp函数在Mathf,Vector3, 等类中都有,用法都类似,作用都是按照百分比取得从一个值过度到另外一个值的中间值。下面说的内容针对各中类的Lerp函数都是通用的。Lerp的常见“误用”是 Update() { Transform.position = Vector3.Lerp(transform.position.x, targetPosition, T原创 2018-01-17 15:09:23 · 21626 阅读 · 2 评论 -
NGUI中UITextList的使用
NGUI中的聊天界面原创 2017-12-01 15:36:37 · 887 阅读 · 0 评论 -
Unity 日志文件的存放
Editor 编辑器Editor log can be brought up through the Open Editor Log button in Unity's Console window.编辑器日志,可以通过Unity的控制台窗口中Open Editor Log 按钮打开。Mac OS X~/Library/Logs/Unity/Editor.log转载 2017-07-28 16:19:51 · 8085 阅读 · 0 评论 -
控制摄像机(camera)的移动,以及摄像机的视角随着鼠标箭头的改变而改变
using System.Collections;using System.Collections.Generic;using UnityEngine;public class CameraControl : MonoBehaviour { public float cameraSensitivity = 90; public float climbSpeed = 4;...原创 2018-11-28 17:27:19 · 1811 阅读 · 0 评论 -
Glow + Outline 轮廓描边,并做Blur处理
原连接:http://www.cnblogs.com/dosomething/archive/2012/08/04/2622488.html根据上面链接,写出的代码。轮廓描边是游戏中的细节 但是一个有特色的效果还是会让人眼前一亮Glow + Outline 的效果就像求生之路2和暗黑3的轮廓描边界一样 对轮廓描边后再进行模糊处理如图: 求生之路2 暗黑3 ...原创 2019-01-05 16:43:12 · 1745 阅读 · 2 评论 -
unity shader _MainTex_TexelSize 和 UNITY_UV_STARTS_AT_TOP 的作用
我们先来看一段代码: #if UNITY_UV_STARTS_AT_TOP if (_MainTex_TexelSize.y < 0) { o.uv.w = 1 - o.uv.w; } #endif 1 2 3 4 5 6_MainTex_TexelSize,这个变量的从字面意思是主贴图 _MainTex 的像...转载 2019-03-22 10:54:30 · 1192 阅读 · 0 评论 -
Unity调用C/C++代码方法
一般C/C++的代码通过VisualStudio生成.Dll文件,然后在unity中通过C#的代码调用即可。一,创建C++的项目选择动态链接库。输入项目名称以及保存路径之后,点击确定。这样我们的C/C++项目就创建成功了二,在源文件中创建c/c++代码然后我们需要在我们创建的DllForUnity.cpp中添加代码:#include "stdafx.h"...原创 2019-09-28 14:40:36 · 12769 阅读 · 1 评论 -
android studio 3.4.1 版 NDK 自动编译产生第三方.so 库
AndroidStudio通过Native调用C++代码连接:https://blog.csdn.net/Chhjnavy/article/details/94721080原创 2019-09-28 13:44:26 · 404 阅读 · 0 评论 -
Build Android Studio时出现的错误: Gradle sync failed: Unable to start the daemon process
一、问题在Android Studio中新建的工程出现了以下问题Error:Unable to start the daemon process.http://write.blog.csdn.net/postedit?ref=toolbarThis problem might be caused by incorrect configuration of the daemon.For...原创 2019-09-26 10:39:15 · 383 阅读 · 0 评论 -
Unity, Android ,StreamingAssets路径下配置文件使用UnityWebRequest的读取(2018版本WWW方法已经弃用)
废话不说了,直接上代码://读取StreamingAssets中的配置文件复制到移动端的Application.persistentDataPath路径下private IEnumerator GetJsonFiles(){ string path = Application.streamingAssetsPath + "/Configs/CpuInfo.json"; Un...原创 2019-08-27 17:46:28 · 4578 阅读 · 1 评论 -
Unity和Android Studio 交互通讯
主要是 根据 参考资料3 的内容。本文尽量减少文字的 描述。参考资料1 有 一点 问题。本文的内容需要 对照 参考资料3 来查看建立 新的工程。点击 FINISH 按钮,新建工程。找到 libs 的文件路径。右键 libs 文件夹,find in path 。按 esc 按键 退出 find in path。打开文...转载 2019-08-24 16:35:56 · 454 阅读 · 2 评论 -
利用MD5码检查图片资源是否重复
本次实验中,我检查的是项目中的哪些贴图是否被重用。代码如下:首先,就是MD5码的生成,这个是最重要的:using System.IO;using System.Security.Cryptography;using System.Text;public class FileHelper{ public static string MD5Stream(Stream inpu...原创 2019-04-05 11:44:43 · 890 阅读 · 0 评论 -
Unity Texture2D分平台压缩设置
记录一下怎么设置的代码片码,unity2017上测的可以var importer = AssetImporter.GetAtPath(a2) as TextureImporter;// 安卓设置TextureImporterPlatformSettings androidSetting = new TextureImporterPlatformSettings();androidSet...原创 2019-03-30 17:14:56 · 1164 阅读 · 0 评论 -
Unity技术支持团队性能优化经验分享
转载:https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA%3D%3D&idx=1&mid=2247490321&sn=f9f34407ee5c5d0d1edb478981299108 在10月26日的Unity独立游戏日上,Unity大中华区技术总监张黎明为大家分享了Unity技术支持团队在性能优...转载 2019-03-22 16:40:19 · 622 阅读 · 0 评论