Unity3D 开发日常随笔
记录平时工作中的知识点,闪光点,自我总计等等。
码农小飞飞
在手游开发的路上越走越远!
展开
-
Unity 3D 创建 合适角度 圆环 内 五边形柱体 mesh
//角度为0-360正值,0起X轴逆时针 public static GameObject CreatePentagonMesh(float _radius, float _innerradius, float _startangle, float _angledegree, float _height,GameObject obj = null) { //Debug.Log(string.Format("起始角度 = {0},总角度 = {1}.", _startangl.原创 2021-11-10 18:52:22 · 2419 阅读 · 0 评论 -
Unity 3D 动态创建Mesh圆环
using UnityEngine;public class _DebugCreateMesh : MonoBehaviour{ public float Radius = 6; //外半径 public float innerRadius = 3; //内半径 public float angleDegree = 360; //扇形或扇面的角度 public float startAngle = 0;//起始角度 publi.原创 2021-10-19 14:43:07 · 2045 阅读 · 0 评论 -
Unity 3D 角色状态机实现
状态基类:public abstract class StateBase{ private bool isAwake = true; protected bool isFinish = true; public void ActionStart(params object[] pars) { OnActionStart(pars); } public void ActionUpdate() { OnAction原创 2021-06-25 18:17:37 · 753 阅读 · 1 评论 -
Unity 3D 区域内获取随机点
using UnityEngine;public class RandomArea : MonoBehaviour{ public enum _AreaType { Square, Circle } public _AreaType type; public Color Color = Color.red; public Quaternion GetRotation() { return Quaternion.Euler(0, transfo.原创 2021-06-18 18:59:36 · 1983 阅读 · 2 评论 -
Unity3D 贝塞尔曲线 抛物线 两点求曲线 追踪弹相关问题
关于贝塞尔曲线的讲解,比较清楚的点击查看。原创 2021-06-09 17:25:44 · 782 阅读 · 4 评论 -
Unity 3D 脚印 足迹 粒子特效实现
using UnityEngine;public class FootstepsS : MonoBehaviour{ public ParticleSystem system; public float delta = 1; public float gap = 0.5f; public bool ShowFootsteps = true; private Vector3 lastEmit; private int dir = 1; pri.原创 2021-05-11 11:51:50 · 2263 阅读 · 0 评论 -
Unity 3D 使用 UGUI 创建摇杆 的简易代码
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class JoyStickS : MonoBehaviour{ public class JoystickInputS { public Quaternion Quaternion; public float Distance; public float MaxDistance;.原创 2021-04-25 11:35:16 · 220 阅读 · 0 评论 -
Unity3D 碰撞盒忽略碰撞
有时候我们不希望,特定的两个碰撞盒产生碰撞效果,但是还要与其他非特定碰撞盒产生碰撞效果。这时我们可以使用:Physics.IgnoreCollision();指定两个碰撞盒,这时碰撞器和触发器均失效了。延申,屏蔽两个层级之间的碰撞效果:Physics.IgnoreLayerCollision();指定两个层级Layer,这时碰撞器和触发器均失效了。...原创 2021-03-09 11:50:05 · 3213 阅读 · 0 评论 -
Unity3D 继承Mono的脚本在属性面板有时没有复选框的问题
参考 :https://blog.csdn.net/a237653639/article/details/45766101?utm_source=blogxgwz6简单说:加上 start 方法,空方法就行。原创 2021-03-05 15:34:21 · 162 阅读 · 0 评论 -
Unity3D 刚体施加爆破力失效问题
GetComponent<Rigidbody>().AddExplosionForce();有时候工作,有时候不工作。还看不出哪有问题。重点来了:我遇到的,这时候,刚体是有父节点的。并且父节点的position,rotation不是(0,0,0)。此时,将父节点 transform reset一下。或者,直接干掉父节点。刚体爆破力就好使了。...原创 2021-03-05 15:30:06 · 655 阅读 · 0 评论 -
unity3D Slider 面板赋值的OnValueChanged事件,如果代码参数是float会导致只能传一个定值(默认为0)
我的unity版本是2018.4.18f1,Slider的OnValueChanged事件,如果代码参数是float会导致只能传一个定值(默认为0,可能导致一些问题);此时可将代码参数改为Slider(将自身Slider拖进去),获取Slider的value进行赋值。...原创 2021-02-01 16:46:34 · 2232 阅读 · 4 评论 -
Unity3D UI指引小手 世界坐标转UGUI坐标
public class GuideManager : MonoBehaviour { public static GuideManager Instance = null; private RectTransform canvas; private RectTransform ImageRoot; private Animator handAnim; private readonly string state...原创 2020-12-21 19:08:57 · 196 阅读 · 0 评论 -
Unity 3D相机FOV适配不同分辨率
原创 2020-12-17 14:03:43 · 1425 阅读 · 0 评论 -
UnityWebRequest 下载阿里云资源写入本地 与 加载资源
using System.Collections;using System.IO;using UnityEngine;using UnityEngine.Networking;using System.Collections.Generic;namespace DownloadResources{ internal class EduResDownloader { private static EduResDownloader _Instance = null.原创 2020-06-08 11:30:46 · 539 阅读 · 0 评论 -
VS C# 如何查看IL代码
首先找到ildasm.exe(我的路径):在VS,工具---外部工具,添加一个:效果:双击查看~原创 2019-12-23 15:32:58 · 2282 阅读 · 1 评论 -
为什么Draw Call多了会影响帧率
在每次调用Draw Call之前,CPU需要向GPU发送很多内容,包括数据﹑状态和命令。在这一阶段,CPU需要完成很多工作,例如检查渲染状态等。而一旦CPU完成了这些准备工作,GPU就可以开始本次的渲染。GPU的渲染能力是很强,渲染200个还是2000个三角网格通常没有什么区别,因此渲染速度往往快于CPU提交命令的速度。如果Draw Call的数量太多,CPU就会把大量时间花费在提交Draw Ca...原创 2019-08-16 14:59:52 · 2645 阅读 · 0 评论 -
CPU和GPU是如何实现并行工作的
如果没有流水线化,那么CPU需要等到GPU完成上一个渲染任务才能再次发送渲染命令。但这种方法显然会造成效率低下。我们需要让CPU和GPU可以并行工作。而解决方法就是使用一个命令缓冲区(Command Buffer)。命令缓冲区包含了一个命令队列,由CPU向其中添加命令,而由GPU从中读取命令,添加和读取的过程是互相独立的。命令缓冲区使得CPU和GPU可以互相独立工作。当CPU需要渲染一些对象时...原创 2019-08-16 14:44:05 · 6514 阅读 · 0 评论 -
什么是OpenGL/DirectX 什么是HLSL﹑GLSL﹑Cg 什么是Draw Call
什么是OpenGL/DirectX如果要开发者直接访问GPU是一件非常麻烦的事情,我们可能需要和各种寄存器﹑显存打交道。而图像编程接口在这些硬件的基础实现了一层抽象。OpenGL和DirectX就是这些图像应用编程接口,这些接口用于渲染二维或三维图形。这些接口架起了上层应用程序和底层GPU的沟通桥梁。一个应用程序向这些接口发送渲染命令,而这些接口会依次向显卡驱动(Graphics Driv...原创 2019-08-16 11:51:32 · 1902 阅读 · 0 评论 -
什么是渲染流水线
渲染流水线的工作任务在于由一个三维场景出发﹑生成(或者说渲染)一张二维图像。换句话说,计算机需要从一系列的顶点数据﹑纹理等信息出发,把这些信息最终转换成一张人眼可以看到的图像。《Real-Time Rendering,Third Edition》一书中将一个渲染流程分成 3 个阶段:应用阶段(Application Stage)﹑几何阶段(Geometry Stage)﹑光栅化阶段(Raste...原创 2019-08-09 17:11:52 · 2361 阅读 · 0 评论 -
Unity 3D 中常用的数据结构
常用的数据结构复杂度 数据结构 Add Delete Find GetByIndex Array O(n) O(n) O(n) O(1) ArrayList O(1) O(n) O(n) O(1) List<T> O(1) O(n) O(n) O(1) LinkedList...原创 2019-08-08 11:33:27 · 1310 阅读 · 0 评论 -
C# 装箱和拆箱
值类型实例进行装箱时的步骤:(1)在托管堆中分配内存。需要注意的是,由于是将值类型进行引用类型化,因而分配的内存空间除了值类型各个字段所需的内存之外,还要加上托管堆所有对象都有的两个额外成员(类型对象指针和同步块索引)所需的内存。(2)将值类型的字段复制到新分配的堆内存中。(3)返回对象地址,即对象的引用。值类型成了引用类型。-----------------------Mon...原创 2019-08-05 16:14:25 · 138 阅读 · 0 评论 -
c# 值类型引用类型
任何被称为“类”的类型都是引用类型。通常使用以下3个关键字来声明一个自己定义的引用类型:(1)Class.(2)Interface。(3)Delegate。当然,在C#中也有一些内建的引用类型:Dynamic ,Object,string常见的引用类型,例如List,text.decoder。-----------------------------值类型大体可以分...原创 2019-08-02 14:40:52 · 170 阅读 · 0 评论 -
C# 值类型引用类型内存空间分配
通常来说,变量的值分配的位置与声明该变量的位置有关。局部变量的值总是在线程栈上,实例变量的值则和实例本身一起存储在实例存储的地方。引用类型实例和静态变量总是存储在堆上。值类型也有可能分配在托管堆上:这些特殊的情况包括数组中的元素﹑引用类型中的值类型字段﹑迭代器块中的局部变量﹑闭包情况下匿名函数(lamda)中的局部变量。这是由于在这几种情况下的值类型实例如果分配在线程栈上,有可能会出现...原创 2019-08-02 11:15:37 · 859 阅读 · 0 评论 -
C# 操作符 new
C# 操作符 new 所作的事。(1)计算所需内存空间,new 操作符会计算目标类型和包括 System.Object 类在内的,其所有基类中定义的所有实例字段所需要的字节数。除此之外,为了方便 Mono 运行时管理对象,还有一些额外的信息需要托管堆为其分配空间,如类型对象指针和同步索引块。(2)完成计算对象所需要的空间后,就要为对象在托管堆上分配所需要的内存空间了。分配的所有字节都设为0...原创 2019-08-02 10:58:53 · 655 阅读 · 0 评论 -
Unity 3d 优化
3个方面:(1)CPU方面(2)GPU方面(3)内存方面CPU方面的优化。常见的项目:(1)DrawCalls(2)物理组件(Physics)(3)GC(4)脚本中的代码质量对DrawCall的优化DrawCall是CPU调用底层图形接口。对于CPU来说,图形处理的工作量是一样的,所以对DrawCall的优化,主要是为了尽量解放CPU在调用图形接口上的开...原创 2019-08-01 18:34:06 · 266 阅读 · 0 评论 -
C# 中的值类型和引用类型 装箱拆箱
看这里。原创 2019-06-06 18:20:31 · 134 阅读 · 0 评论 -
常用数据结构及复杂度 以及复杂度求解
常用数据结构及复杂度:看这里。求法:看这里。原创 2019-06-06 17:50:09 · 422 阅读 · 0 评论 -
基于 Mono脚本的 简单计时器
using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;public class TimerManager : MonoBehaviour{ private static TimerManager m_Instance = null; public static TimerM...原创 2019-12-18 19:02:59 · 236 阅读 · 0 评论 -
Unity 3D 屏蔽字 敏感字 Hashset<string>版
using System.Collections.Generic;using UnityEngine;public class MyBadWordsTest : MonoBehaviour{ public TextAsset allBadWords; private int theLongestNum = 0; private int theShortestNum...原创 2019-12-05 10:46:50 · 758 阅读 · 0 评论 -
Unity 3D 3D坐标转换UI坐标(UGUI) 世界坐标转换UGUI坐标 以及Text Mesh使用
比如血条等的位置,实时跟随主角。using UnityEngine;public class Game3DPosToUIPosMyTest : MonoBehaviour{ public Transform targetTran; public RectTransform hpTran; public Camera uiCamera; public ...原创 2019-11-13 15:39:39 · 3210 阅读 · 0 评论 -
Unity 3D 编辑器模式 一键处理Mesh的缩放归一
直接上代码using UnityEditor;using UnityEditor.SceneManagement;using UnityEngine;using UnityEngine.SceneManagement;public class ResetModelMeshRenderScaleMyTools{ [MenuItem("My Tools/模型MeshRende...原创 2019-11-07 11:04:32 · 1026 阅读 · 0 评论 -
Unity 3D BMFont自定义字体
软件下载地址还有介绍http://www.angelcode.com/products/bmfont/using System;using System.Collections;using System.Xml;using UnityEditor;using UnityEngine;public class MyBMFontXMLTools : EditorWindow{ ...原创 2019-11-04 14:35:45 · 301 阅读 · 0 评论 -
Unity 3D 红点系统
定义常量:public class RedPointConst{ public const string main = "Main"; public const string mail = "Main.Mail"; public const string mailSystem = "Main.Mail.System"; public const string...原创 2019-10-28 11:23:29 · 1477 阅读 · 0 评论 -
Unity 3D 创建和写入Excel
导入 EPPlus.dllusing System.IO;using OfficeOpenXml;using UnityEngine;public class CreateAndWriteExcelMyTools : MonoBehaviour{ private void Start() { //--路径以及名称 string f...原创 2019-10-22 17:40:46 · 856 阅读 · 0 评论 -
Unity 3D 使用 ExcelDataReader 读取Excel文件
Excel的第三方库https://github.com/ExcelDataReader/ExcelDataReader打开上面的Github地址。克隆库到本地,然后解压Zip后打开文件夹。用VS打开Vs解决方案.sln,生成解决方案。之后在工程目录下找到下面的这个文件夹中选中的三个文件,拖入Assets/Plugins/下。还有这个,Unity安装目录的System.Data...原创 2019-10-22 15:42:05 · 1762 阅读 · 0 评论 -
Unity 3D MonoBehaviour 脚本 方法调用顺序
Editor :ResetInitization:Awake,OnEnable,StartPhysics:FixedUpdate,yield WaitForSixedUpdate,Internal physics update,OnTriggerxxx,OnColisionxxInput events:OnMousexxxGame logic:Update,yi...原创 2019-08-02 17:20:50 · 936 阅读 · 0 评论 -
Unity 3D ScrollRect 无限循环复用
一个简单的列表,一行一个item,垂直滑动。看看代码,简单修改一下可以实现多列,水平滑动等等,或者是加各种回调,就不写了。using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public interface IReuseScrollRect{ float GetItemHeigh...原创 2019-07-02 15:54:23 · 1915 阅读 · 0 评论 -
Unity3D UGUI 实现翻书特效
参考大佬的,链接找不到了,找到了再加在这。下边是Shader代码:// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Personal/PageTurning" { Properties { _Color ("Color", Color) = (1...原创 2019-06-26 16:42:47 · 4181 阅读 · 2 评论 -
DateTime 与 TimeSpan 的各种用法
想看那个就打开那个注释。////--DateTime各种ToString("")请看https://www.cnblogs.com/wangyuelang0526/archive/2012/06/27/2565289.htmlusing System;using UnityEngine;public class TimeAbout : MonoBehaviour{ p...原创 2019-06-25 18:36:36 · 3793 阅读 · 0 评论 -
Unity3D 三种截屏方法
看这里。原创 2019-06-11 14:27:06 · 2345 阅读 · 0 评论