![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
文章平均质量分 71
星际行走
这个作者很懒,什么都没留下…
展开
-
特性Attribute
本文只提及常用的特性,更多特性请查看官方文档。使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本,而不仅是“Component > Scripts”菜单。使用此属性可以更好地组织 Component 菜单,从而改进添加脚本时的工作流程。原创 2023-08-04 15:08:38 · 352 阅读 · 0 评论 -
lua的字符串匹配,正则表达式
Lua 中的匹配模式直接用常规的字符串来描述。它用于模式匹配函数。你还可以在模式串中使用字符类。字符类指可以匹配一个特定字符集合内任何字符的模式项。比如,字符类匹配任意数字。所以你可以使用模式串 %d%d/%d%d/%d%d%d%d 搜索。转载 2023-11-21 17:06:44 · 618 阅读 · 0 评论 -
ScriptableObject使用指南
原文链接:https://blog.csdn.net/qq_46044366/article/details/124310241。转载 2023-10-24 11:34:59 · 123 阅读 · 0 评论 -
自定义特性,PropertyAttribute 与 PropertyDrawer
/ 自定义 Serializable 类可以使用自定义属性绘制器来更改 Inspector 中 Ingredient 类的每个外观。比较不带有和带有自定义属性绘制器的 Inspector 中 Ingredient 属性的外观:不带有(左)和带有(右)自定义属性绘制器的 Inspector 中的类。可以使用属性将属性绘制器附加到 Serializable 类,然后传入属性绘制器所针对的 Serializable 类的类型。// 在给定的矩形内绘制属性。转载 2023-10-20 15:53:50 · 173 阅读 · 0 评论 -
欧拉角、四元数与旋转
欧拉角、四元数与旋转原创 2022-08-08 16:51:02 · 1544 阅读 · 0 评论 -
Content Size Fitter与Vertical Layout Group、LayoutElement的结合使用
Content Size Fitter组件主要是用来设置UI的长宽,Horizontal Fit和Vertical Fit分别是控制UI的宽和高,有三个值可选:Unconstrained:组件不根据布局元素调整 ,可手动修改长宽的值。MinSize:根据布局元素的最小值来调整,不能手动修改长宽的值。PreferredSize:根据布局元素的内容来调整,不能手动修改长宽的值。一、最简单的用法,挂在Text上,根据文本内容改变尺寸二、文字后边固定位置加图片:如游戏中聊天(名字+表情).转载 2022-05-20 21:09:17 · 1383 阅读 · 1 评论 -
unity小技巧
一、text添加删除线方法一、1、text添加组件content size fitter2、添加个image作为删除线,添加为子节点,左右拉伸适配。image纯色即可方法二、用TextMeshPro,TextMeshPro的font style直接就支持删除线...原创 2022-04-24 17:18:15 · 2347 阅读 · 0 评论 -
Unity的程序集Assembly 与 加快代码编译速度
学习大纲 一. 什么是程序集?二. 为什么使用程序集?三. 如何在Unity中使用程序集1.基本常识2.自定义程序集3. 多层级的程序集4. Assembly Definition Reference 四. 程序集 Inspector 面板详解 一. 什么是程序集? 程序集是代码进行编译是的一个逻辑单...转载 2021-12-06 15:21:08 · 2660 阅读 · 0 评论 -
程序集与反射技术(C#)
首先我们来看程序集,程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件.exe和类库文件.dll)。由于程序集在编译后并不一定会生成单个文件,而可能会生成多个物理文件,甚至可能会生成分布在不同位置的多个物理文件,所以程序集是一个逻辑单元,而不是一个物理单元。即程序集在逻辑上是一个编译单元,但在物理储存上可以有多种存在形式。对于静态程序集可以生成单个或多个文件,而动态程序集是存在于内存中的。在C#中程序集处处可见,因为任何基于.NET的代码在编译时都至少存在一个转载 2021-12-06 14:38:30 · 197 阅读 · 0 评论 -
将UI的点击事件渗透下去
处理UI还有3D模型的点击推荐使用UGUI的这套事件系统,因为使用起来比较简洁,不需要自己用代码来发送射线,并且可以很好的处理同时点击UI和3D模型上。1.给3D摄像机挂一个Physics Raycaster组件。Event Mask过滤掉UI.2.用unity自带的Event Trigger 或者 http://www.xuanyusong.com/archives/3325就可以对UI 或者 3D模型进行点击事件的监听了3.OK 当UI与模型相互叠加的时候,优先响应UI,并且响应最前面...转载 2021-12-03 15:01:19 · 242 阅读 · 0 评论 -
Android全自动打包生成apk
https://www.xuanyusong.com/archives/2748转载 2021-12-02 11:17:40 · 1481 阅读 · 0 评论 -
脚本批量打包渠道包研究
近在研究Unity3D脚本批量打包,比如在Android平台下各种不同分辨率和不同内存大小的机器,可能还有不同的渠道包,不同渠道可能用的SDK都不一样,这一切的一切都表明你的代码无法做到自适应的,除非批量打包提供各个平台的预定义标签#define 。Unity默认提供了一些预定义标签如:UNITY_EDITOR : 编辑器模式下。UNITY_STANDALONE:PC Mac Linux模型下。UNITY_IPHONE:IOS模式下。UNITY_ANDROID:ANDROID模式下。.转载 2021-12-02 10:47:03 · 227 阅读 · 0 评论 -
Unity3D中所有特殊的文件夹
这里列举出手游开发中用到了所有特殊文件夹。1.EditorEditor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以。比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论多少个叫Editor的文件夹都可以。Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用。一般呢会把一些工具类的脚本放在这里,或者是一些编辑时用的DLL。 比如我们现在要做类似技能编辑器,那么编辑器的代码放在这里是再好不过了,因为...转载 2021-11-26 10:59:17 · 640 阅读 · 0 评论 -
Unity获取隐藏的游戏对象
我觉得Unity里面的Transform 和 GameObject就像两个双胞胎兄弟一样,这俩哥们很要好,我能直接找到你,你也能直接找到我。我看很多人喜欢在类里面去保存GameObject对象。解决GameObject.Find()无法获取天生activie = false的问题。 privateGameObjectroot;我觉得你最好不要保存GameObject ,而是去保存Transform ,因为Transform下的方法要比GameObject多,使用频率也要高很多。 ...转载 2021-11-24 11:24:40 · 2597 阅读 · 1 评论 -
点乘和叉乘在游戏中的应用
点乘:运算结果是标量。当向量a和向量b归一化后,点乘的值:同向为1(夹角为0),垂直为0(夹角为90),负向为-1(夹角为180)。点乘用法:1、得到2个向量的夹角:范围[0, 180] ,可以做游戏怪物的视角是否有查看到玩家,可以用来计算敌人是否在角色的攻击范围之内。夹角不区分左右。2、判断目标在自己的前后方位。点乘的结果大于0为前方,小于0为后方。叉乘:与点积不同,它的运算结果是一个向量而不是一个标量叉乘用法:1、得到2个向量的夹角:范围[..原创 2021-08-22 21:08:45 · 1910 阅读 · 0 评论 -
unity直接连接安卓手机,调试运行
一.Android版首先应该确保安装了最新的 Android SDK(这对于在设备上设置端口转发非常必要)。然后,使用 USB 连接线连接设备与电脑,并启动UnityRemote 应用程序。在 Unity 编辑器中按下播放 (Play) 时,设备将充当远程控制,并将加速计和触摸输入事件传到正在运行的游戏中。■使用步骤:1,手机端下载 Unity Remote.apk。(可在Google Play下载,或在自己手机对应的应用商店下载)网盘下载地址:https://pan.bai...转载 2021-02-26 11:02:06 · 12008 阅读 · 1 评论 -
Unity游戏优化
官方的优化方案:https://docs.unity3d.com/cn/current/Manual/30_search.html?q=%E4%BC%98%E5%8C%96Static Batching 静态批处理只要这些物体不移动,并且拥有相同的材质,静态批处理就允许引擎对任意大小的几何物体进行批处理操作来降低描绘调用。物体是静止的,并且在游戏中永远不会移动、旋转和缩放。想完成这一步,你只需要在检测器(Inspector)中将Static复选框打勾即可。...原创 2021-02-03 17:30:27 · 404 阅读 · 0 评论 -
Unity优化之GC——合理优化Unity的GC
Unity优化之GC——合理优化Unity的GC转载自https://blog.csdn.net/worisaa/article/details/64121436简介 之前一直对 Unity 中的 GC 是没有什么概念的,对内存管理的概念也都比较模糊了,直到上周公司的技术总监在做技术分享会的时候讲了一下 GC,这才对 Unity 中的 GC 有了一定的了解,知识不敢独享,因此拿出来和大家一起学习一下,共同进步!俗话说得好,一图胜千言,常见的 Unity GC 知识点总结出来就是下面这样思维导图转载 2021-01-12 16:48:36 · 3678 阅读 · 0 评论 -
判断鼠标或者手指是否点击在UI上
对于EventSystem.current.IsPointerOverGameObject这个函数,因为EventSystem是UI的事件系统,所以IsPointerOverGameObject中的GameObject是针对UI的,而不是普遍意义上的GameObject可用于UI遮挡点击3d物体。using UnityEngine;using UnityEngine.UI;using...原创 2020-04-13 17:53:16 · 333 阅读 · 0 评论 -
解析txt数据文件,通过获取对象属性的名字自动匹配
直接看获取数据的代码调用:public class TestTxtDataAnalysis : MonoBehaviour { void Start () { // 遍历道具和武器数据集合,输出ID和名字 for (int i = 1; i <= PropAndWeaponData.DicData.Count; i++) ...原创 2020-03-13 15:22:41 · 915 阅读 · 2 评论 -
UGUI射线检测
1.Graphic Raycaster主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上)。Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测;反面展示时,不会接收到射线检测;否则,正反面展示都会接收到射线检测...转载 2018-06-29 10:00:53 · 351 阅读 · 0 评论 -
C#单例类的泛型,相当于C++的类模板
public class SingletonNoMono<T> where T : new(){ private static T instance; private static readonly object lockObject = new object(); public static T Instance { get ...原创 2018-09-18 16:51:01 · 632 阅读 · 0 评论 -
物理关节
弹簧关节Spring Joint弹簧有两端,一端固定在场景的某个位置或者某个物体上,另一端固定在当前物体上。属性Anchor 弹簧一端固定在当前物体的锚点位置。Connected Anchor当弹簧只连接了当前物体,没连接其他物体,该锚点则表示弹簧一端固定的位置的世界坐标。当弹簧也连接了其他物体,锚点则表示弹簧一端固定在其他物体的锚点位置。Conne...原创 2019-04-11 17:44:41 · 380 阅读 · 0 评论 -
新手引导遮罩与高亮的实现
GuidePanel即新手引导界面1、遮罩GuidePanel添加张image,勾选Raycast Target,调整颜色并设置全屏。2、高亮区域的显示// 取消高亮 private void CancelHightLight(GameObject go) { Destroy(go.GetComponent<GraphicRaycaster>()); ...转载 2018-06-28 20:13:00 · 2854 阅读 · 0 评论 -
自定义UIButton类
使用方法:将UIButton类挂在image等控件上,在panel里面获取UIButton,并绑定需要响应事件的函数。UIButton类:using UnityEngine;using UnityEngine.EventSystems;public class UIButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, ...原创 2018-06-21 17:53:49 · 510 阅读 · 0 评论 -
Unity对象的重用
本文实现了怪物子弹的重用。可通过子弹名字来获取已生成且被隐藏的对象。public List<GameObject> bulletList = new List<GameObject>();public void CreateBullet(int monsterID, Transform Par, Transform tar, string prefabName) ...原创 2018-06-05 17:26:41 · 337 阅读 · 0 评论 -
通过物体的世界坐标,获取对应的UI界面坐标
// 通过物体的世界坐标,获取物体的屏幕坐标Vector2 screen_xy = SEHCameraManage.Instance.pCamera.WorldToScreenPoint(pos);Vector2 outPos;// 通过物体的屏幕坐标,获取物体的UI局部坐标if (RectTransformUtility.ScreenPointToLocalPointInRectang...原创 2018-05-21 18:23:32 · 864 阅读 · 0 评论 -
在属性面板上设置较多数据
这是一种较为简单的做法。当然,数据太多的话,最好还是使用配置文件,虽然读取会麻烦些。原创 2018-04-11 18:18:33 · 591 阅读 · 0 评论 -
碰撞、触发与刚体
void OnCollisionEnter(Collision other):碰撞开始void OnTriggerEnter(Collider other):触发开始碰撞发生条件:两个物体都有碰撞盒,且主动方有刚体,由主动方去碰撞另一个物体。例如:静态物体有碰撞盒,动态物体有碰撞盒和刚体,两者即可发生碰撞。如果两者都有碰撞盒,但是有刚体的是静态的,动态的物体无刚体,动态物体可以穿透静态物体,而不会...转载 2018-04-03 17:32:19 · 659 阅读 · 0 评论 -
三消游戏查找匹配的实现
/// <summary> /// 查找当前元素匹配的满足消除条件的元素列表 /// </summary> /// <returns></returns> public List<Item> FindMatchItems() { List<Item> ma...转载 2018-12-20 16:32:38 · 642 阅读 · 1 评论 -
Unity存档之txt
需要using System.IO;主要代码如下:private string fileDir; // 文件路径 public void Init() { // 创建文件夹路径 string dir = "";#if UNITY_EDITOR dir = Application.dataPath.Replace(...原创 2019-02-22 15:30:46 · 625 阅读 · 0 评论 -
Unity5.0新特性------动画的StateMachineBehaviours状态机
State machine behaviours可以挂载在Animator Controller里面的动画状态上。把这个脚本挂在动画状态上,可以很清楚的知道状态控制器在执行什么状态。下面的AnimationStateCb类即继承自StateMachineBehaviour在inspector中点击Add Behaviour,选择新建...转载 2019-03-01 18:40:34 · 2413 阅读 · 0 评论 -
函数学习
transform.position = Vector3.Lerp(transform.position, target, Time.deltaTime * speed); // 第三个参数的值限制为[0,1],小于0即为0,大于1为1。当前帧移动的距离为:第三个参数 * 总距离,如第三个参数为0.5,一帧就是移动一半的距离。如果距离小于0.1,好像是默认一帧移动完原创 2017-08-04 16:57:38 · 201 阅读 · 0 评论 -
涂色功能
先上效果图,红色部分为涂色:场景节点绘制节点// 挂在UICamera上public class UIManager : MonoBehaviour { public static UIManager Instance; public Camera camera; public Canvas canvas; void Awake () { ...原创 2019-08-01 18:38:49 · 258 阅读 · 0 评论 -
Unity Shader 基础教程
如果想对渲染流程有更清楚的认识,可以看【转】《Unity Shader入门精要》冯乐乐著 书中彩图直接上完整版源码,后面才是教程:Shader "Unlit/TestShader"{ Properties{ // 属性块,自定义数据。在这里声明的数据将被显示在Unity Editor面板中,在Editor中更改也会驱动脚本更改。 // 程序中的属性名字("unity面板显示的名...转载 2019-07-17 15:53:12 · 349 阅读 · 0 评论 -
Unity Shader 基础教程2
转载自:Unity ShaderLab学习总结1.先来一段单张纹理贴图的shader示例代码:// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/MyShader"{Properties{ //外部可调属性 _MainTex ...转载 2019-07-19 11:47:40 · 350 阅读 · 0 评论 -
最简版和简单版对象池管理
简单版对象池只有三个类:PrefabPool,SpawnPool,PoolManager代码:// 预设体池,一种预设体对应一个PrefabPoolpublic class PrefabPool{ public string name = null; // 预设体池的名字,设置为预设体的名字 public Transform tranPar; publ...原创 2019-07-02 15:23:41 · 415 阅读 · 0 评论 -
编辑器之批量创建精灵对象ScriptObject用于动态加载
将一个个小图打包成图集,以减小Drawcall(类似coco2d-x一样,打包成图集一次性加载以内存换取图片读取效率),但是这样打包成图集后,动态使用就比较麻烦。下面这种方法可以将需要动态使用的小图批量创建为精灵对象,从而方便动态加载使用。我们直接看动态加载使用: private Image image; void Start () { image =...原创 2019-04-19 11:50:51 · 1733 阅读 · 0 评论 -
Unity 制作艺术字 BMFont
BMFont软件的下载地址:https://pan.baidu.com/s/1NgBxz_8rmtqSKEtgg3FUjg然后下载解压就能发现 点击安装制作软件去你安装的目录下启动然后让美工给你出几张图片点击制作 一张张的导入图片 赋予id添加图片 路径最好不要带中文然后设置id 举个例子 我添加了艺术字0 然后图集里的0对应的是id48 我就把id改...转载 2019-04-09 16:04:08 · 276 阅读 · 0 评论 -
Unity存档之json(使用JsonUtility与Type.GetFields)
存储数据:使用JsonUtility.ToJson(this)将当前类的公有成员变量转为json,并存储到json文件读取数据:从json文件中读取数据,并通过Type.GetFields来给所有数据赋值优点:不用自己将需存储的数据拼成一个字符串再去存储到文件中。也不用自己解析读取的数据。复杂数据:可以用多个list表示,或者用一个存储string的list来表示,读取的时候再解析...原创 2019-03-26 17:04:50 · 826 阅读 · 0 评论