Unity
DOUM123
这个作者很懒,什么都没留下…
展开
-
UnityC#学习之--LineRenderer组件
目录1. 定义2. 创建3. 重要参数1. 设置点2. 是否使用世界坐标系3. 是否首尾相连1. 定义LineRenderer 是 Unity 提供的一个用于画线的组件,使用它我们可以在场景中绘制线段一般用于:1 绘制攻击范围2 武器红外线3 辅助功能 ...2. 创建在空物体上添加 Line Renderer 组件或者直接通过代码添加 void Start(...原创 2022-01-28 08:07:32 · 3828 阅读 · 0 评论 -
UnityC#学习之--场景异步切换
1. 通过事件回调函数 异步加载不要忘了在 Build Settings 里添加想要切换的场景!! AsyncOperation ao = SceneManager.LoadSceneAsync("场景名称");//加载完毕后处理逻辑的事件ao.completed += (a) =>{ print("加载结束");};2. 通过协程 异步加载待续......原创 2022-01-24 09:20:46 · 1946 阅读 · 0 评论 -
UnityC#学习之-- Resources 特殊文件夹
Resources支持的加载类型:1.预设体对象——GameObject2.音效文件——AudioClip3.文本文件——TextAsset4.图片文件——Texture...................资源同步加载 普通方法Object obj = Resources.Load("Cube");Instantiate(obj);//----------------------------------GameObject...原创 2022-01-20 08:15:34 · 2645 阅读 · 0 评论 -
UnityC#学习之--协同程序(协程)
开启协程 void Start() { IEnumerator ie = MyCoroutine(1, "123"); StartCoroutine(ie); } IEnumerator MyCoroutine(int i, string str) { print(i); //协程函数当中 必须使用 yield return 进行返回 yield return null;原创 2022-01-14 09:01:01 · 1555 阅读 · 0 评论 -
UnityC#实现最快捷的计时器
利用 Invoke 函数调用 int time = 0; void Start() { DelayFun(); } //调用外层包裹自己的函数 private void DelayFun() { print(time + "秒"); ++time; Invoke("DelayFun2", 1); }原创 2022-01-13 08:51:02 · 929 阅读 · 0 评论 -
UnityC#学习之--Invoke
会延时执行的函数是 MonoBehaviour 基类中实现好的方法Invoke参数一:函数名 字符串参数二:延迟时间 秒为单位 void Start() { Invoke("DelayDoSomething", 1); } private void DelayDoSomething() { print("延时执行的函数"); TestFun(2); } private原创 2022-01-12 08:17:30 · 1888 阅读 · 0 评论 -
UnityC#学习之--四元数
目录概念构成公式应用概念3D空间中的旋转量, 绕着任意一个向量旋转的角度得到的旋转量构成一个四元数包含一个标量和一个3D向量[w, v], w 为标量, v 为3D向量[w, (x, y, z)] 对于给定的任意一个四元数: 表示3D空间中的一个旋转量公式假设绕着 n 轴旋转 β 度, n 为(x, y, z)那么可以构成四元数为:四元数 Q = [cos(β/2), sin(β/2)n]四元数 Q =[cos(β/2), sin(β/2)x.原创 2022-01-07 08:52:48 · 1518 阅读 · 0 评论 -
UnityC#学习之--插值运算
目录1. 线性插值Lerp1) 先快后慢, 平滑移动2) 匀速2. 球形插值Slerp1) 和线性插值区别2) 用法1. 线性插值Lerp1) 先快后慢, 平滑移动公式start = start + (end - start) * t(t 不变)用法 //1.先快后慢 每帧改变start位置 位置无限接近 但不会得到end位置 A.position = Vector3.Lerp(A.position, B.positio..原创 2022-01-05 10:24:07 · 2343 阅读 · 1 评论 -
UnityC#学习之--画线(测试用)
首先说明这里画的线只在编辑器里显示, 画激光有另外的方法目录1. DrawLine2. DrawRay1. DrawLine需要两个坐标1, 坐标2, 并且写到Update方法里Debug.DrawLine(this.transform.position, target.transform.position, Color.blue) ;2. DrawRay需要一个起点和一个方向Debug.DrawRay(this.transform.position, t..原创 2022-01-03 10:08:49 · 1058 阅读 · 0 评论 -
UnityC#学习之--特性[]
目录1. [SerializeField]2. [HideInInspector]3.[System.Serializable]4.[Header()]5.[Tooltip()]6.[Space()]7.[Range(min, max)]8.[ContextMenuItem("显示按钮名", "方法名")]9.[ContextMenu("测试函数")]1. [SerializeField]让私有的和保护的也可以被显示[Serializ...原创 2022-01-02 10:40:08 · 958 阅读 · 0 评论 -
UnityC#学习之--向量
1. 向量是什么有数值大小, 有方向的矢量在Unity里一个Vector3类型的数值例如(1,2,1), 既可以表示一个点, 也可以表示一个由原点指向这个点的向量位置 —— 代表一个点this.transform.position方向 —— 代表一个方向this.transform.forward可以理解为以世界坐标系为基准的偏移值2. 向量的计算两个点就能决定一个向量要计算一个由A点指向B点的向量的话, 只需用B点坐标减去A点坐标即可即终点减起点.原创 2022-01-01 09:55:33 · 3927 阅读 · 1 评论 -
UnityC#学习之--实现一个物体按曲线移动(正弦/余弦)
//面朝向移动速度 public float moveSpeed = 5; //左右曲线移动变化的速度 public float changeSpeed = 2; //左右曲线移动距离控制 public float changeSize = 0.5f; private float time = 0; void Update() { //面朝向移动 this.transform.Translate(V...原创 2021-12-31 08:49:37 · 1896 阅读 · 1 评论 -
UnityC#学习之--弧度和角度相互转化
1. 角度转弧度//角度转弧度float anger = 1;rad = anger * Mathf.Deg2Rad;2. 弧度转角度//弧度转角度float rad = 1;float anger = rad * Mathf.Rad2Deg;原创 2021-12-30 12:51:36 · 1763 阅读 · 0 评论 -
UnityUI超简单实现敌方血条近大远小的效果
具体思路就是使用UnityC#里的Camera.WorldToScreenPoint方法,其z轴近似敌方到玩家摄像机的距离,通过这个z轴数值乘以血条的长宽来实现近大远小首先附上我的血条制作博客:Unity创建能跟随玩家移动血条HP的方法,so easy_wanghexuan的博客-CSDN博客1.首先创建画布,渲染模式Render Mode改成Word Space,并调整参数至玩家头顶2. 再创建两个Texture,一个作为背景,一个作为血量,HPBarBG背景颜色最好设置成暗色调作为血量的text原创 2021-12-22 10:45:00 · 1326 阅读 · 0 评论 -
使用面向对象思想简单实现Unity射击游戏不同枪械有数量不同的子弹发射口
在开发射击游戏时,经常会碰到不同枪械有不同的子弹发射口的数量,或是不同的发射口会生成不同子弹的问题.其实实现起来很容易:写一个Weapon武器类,然后公开出发射点的成员变量, 在编辑器里修改即可类图代码public class Weapon : MonoBehaviour{ //用于实例化的子弹对象(也可以做成数组) public GameObject bullet; //外部决定到底有几个发射位置 public Transform[]...原创 2021-12-18 08:56:59 · 1249 阅读 · 0 评论 -
Unity用面向对象的思想实现拾取随机武器的快捷方法
整体思路很简单,玩家捡道具(Trigger触发检测),碰到了,就切换武器玩家有拿武器的位置,当前武器,切换武器的方法道具类有此道具是什么武器的信息,还有调用玩家切换武器的方法整体类图玩家类public class PlayerObj : TankBaseObj{ //当前武器 public WeaponObj nowWeapon; //武器父对象位置 public Transform weaponPos; public voi..原创 2021-12-14 11:32:31 · 2313 阅读 · 0 评论 -
UnityUI实现最基础常用的小地图(附带小地图代码)
本篇介绍的制作小地图的方法,本质上是把Camera摄像机上渲染的场景映射到一个image图片的texture材质上,方法非常的简单,跟着步骤做就没有问题~1. 首先创建一个Camera,调整位置为俯视,然后移除上面的Audio Listener组件2. 在资源文件夹下创建RenderTexture,起名为Map,把它拖拽给新创建的Camera上的TargetTexture,这时候图片材质就会显示Camera渲染的场景 3.再用UGUI创建一个Raw Ima...原创 2021-12-11 07:54:00 · 2461 阅读 · 0 评论 -
Unity创建能跟随玩家移动血条HP的方法,so easy
1.首先创建画布,渲染模式Render Mode改成Word Space,并调整参数至玩家头顶2. 再创建两个Texture,一个作为背景,一个作为血量,HPBarBG背景颜色最好设置成暗色调作为血量的texture(HPBar)需要设置一张自己的2D图片(不然下面的工作无法进行)再改变image Type为Filled,Fill Method为水平Horizontal改变FillAmount就可以改变图片的显示范围,就可以模拟一个血条血槽辣3. ..原创 2021-12-06 11:07:02 · 1569 阅读 · 0 评论 -
面向对象思想在UnityUI控制背景音乐音效大小开关中的运用
几乎所有游戏的设置面板都会有控制音效BGM背景音乐Music的开启或关闭,音量大小调整的选项.那么我们如何用最简单最直接快捷的面向对象思想来实现这个功能呢?接下来就为大家说明.AudioSource部分1.首先创建一个空物体,添加AudioSource组件,把你想播放的Audio拖上去(我这里颜色有点怪,不过无伤大雅)2.再在空物体上新建一个脚本,用于管理音频这个脚本里定义自身的AudioSource,还有向外公开改变音量大小和开启关闭的方法...原创 2021-12-03 11:04:02 · 3789 阅读 · 0 评论 -
简单的不能再简单的PlayerPrefs实现玩家设置的存储读取以及显示
首先设定一个Data类,里面临时存储玩家设置数据/// <summary>/// 数据类,用来数据传递/// </summary>public class Data { public int playerData;}接着创建一个单例模式的数据管理类,声明一个数据类的引用,构造方法加载数据,然后给外部提供一个只要改变设置就存储的方法public class DataManager { private static DataManager i原创 2021-11-28 12:47:06 · 1477 阅读 · 0 评论 -
关于UnityUI界面显示隐藏的问题
我们在制作UI的时候需要用控制界面的显示与隐藏,但是如果一开始就直接禁用的话,会无法加载这个界面上的组件和代码.口累哇 打咩(这样不行): 无法加载SettingPanel这个时候我们需要用代码控制,而且有讲究1.继承一个UI的父类,这个父类里面有显示和隐藏的方法,最重要的是,要在Awake()里实例化.public class BasePanel<T> : MonoBehaviour where T : class{ private static T i.原创 2021-11-27 12:08:30 · 6570 阅读 · 1 评论