文章目录
✨写案例总结的一些知识点,文章如有误请指正,如果觉得对你有用,请点赞收藏关注一波,谢谢支持😘
一、血条和蓝条的状态
- RectTransform.sizeDelta
- public Vector2 sizeDelta ;
- 描述:
此 RectTransform 相对于锚点之间距离的大小,sizeDelta属性可以获取血条图片的大小,
如果锚点在一起,则 sizeDelta 与大小相同。如果锚点处于父项四个角的各个角中,则 sizeDelta 是 矩形与其父项相比更大或更小的程度。 - sizeDelta修改时不能单独修改x或y
二、 画布设置
1、画布的三种渲染状态
2、画布的三种模式
- 原来的大小(没有响应式,初始的大小UI在屏幕发生变化的情况下就UI就会发生变形)
- 画布响应式(常用:可以根据屏幕的大小自动相应UI的大小)
3.固定大小
三、 圆头像的实现
Canvas->img(外面的框)->img(一张圆图片(添加Mask组件))->img(人物图片)
效果
四、UI快速布局
- 横向布局:img(Horizontal Layout)->img(N个)
2. 纵向布局:img(Vertical Layout)->img(N个)
四、UI接口事件
命名空间: using UnityEngine.EventSystems;
五、角色碰撞器
- 描述
CharacterController 可使您轻松进行受碰撞约束的移动,同时不必处理刚体。
CharacterController 不受力影响,仅在您调用 Move 函数时才会移动。 然后它执行移动,但受碰撞约束。
- 添加组件CharacterController
2. player.position=>player.Move()
六、单例私有化
七、字典的使用
- 命名空间:using System.Collections.Generic;
- 创建字典: Dictionary<int, int> zidian=new Dictionary<int, int>();
- 变量
变量 | 作用 |
---|---|
Count | 个数 |
- 公共函数
公共函数 | 作用 |
---|---|
ContainsKey | 判断有没有这个key |
ContainsValue | 判断有没有这个value |
Add | 将具有指定键和值的元素添加到哈希表中。 |
Clear | 将计数设置为零,并释放集合元素中对其他对象的引用。 |
Contains | 确定该哈希表是否包含指定的键。 |
Remove | 从哈希表中删除具有指定键的元素。 |
八 、碰撞指定物体时会触发该物体的回调函数
被指定的物体身上的脚本函数
void TankInjured()
{
}
如:子弹碰到该物体时会触发碰撞物体身上的TankInjured函数
public void OnTriggerEnter(Collider othen)
{
othen.SendMessage("TankInjured");
}
九、清除所有子项的父级
描述:要在不销毁子项的情况下销毁层级视图的根时,该方法很有用。
使用:Transform.DetachChildren();
十一、Random
- 描述
用于生成随机数据的类。 - 变量以及函数
|静态变量||★
| -|-|
|insideUnitCircle |返回半径为 1 的圆形内的随机点(只读)。
|insideUnitSphere |返回半径为 1 的球体内的随机点(只读)。
|onUnitSphere |返回半径为 1 的球体表面上的随机点(只读)。
|rotation |返回随机旋转(只读)。
|rotationUniform |返回具有一致分布的随机旋转(只读)。
|state |获取/设置随机数生成器的完整内部状态。
|value |返回介于 0.0 [含] 与 1.0[含] 之间的随机数(只读)。
静态函数 | ★ |
---|---|
ColorHSV | 通过 HSV 和 Alpha 范围生成随机颜色。 |
InitState | 使用种子初始化随机数生成器状态。 |
Range | 返回介于 min [含] 与 max[含] 之间的随机浮点数(只读)。 |
十二、刚体
- Rigidbody.velocity
刚体的速度矢量。它表示刚体位置的变化率 - Rigidbody.AddForce
向 Rigidbody 添加力。
力只能施加于处于活动状态的刚体。如果 GameObject 处于非活动状态,则 AddForce 没有效果。此外,刚体不能是运动刚体。
默认情况下,一旦施加力(Vector3.zero 力除外),刚体的状态就会被设置为唤醒。
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
public float thrust = 1.0f;
public Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
rb.AddForce(transform.forward * thrust);
}
}
十三、函数的内部的临时变量
代码:
📕:定义了一个带参数的函数,参数正好组件有匹配的就是内部的临时变量;
十四、动画播放完执行函数
十五、Physics2D使用
- 检测某一点以2为半斤该圆的任一点检测周围有没有碰撞体;
Physics2D.OverLapCircle(哪个位子,圆上的一点距离,LayerMask layer)
十六、静态方法
- 直接点到组件上的组件或属性
FindObjectOfType<>();
十七、实现背景与摄像机错位的效果
十八、手机测试手柄素材
十四、动画的融合术
一一对应
十五、Outline组件
说明:外光线,舔加文本清晰度
十六、利用委托舔加方法
public event Action<Vector3> EventVector3;
PlayerMove.Instance.EventVector3 += playerMovement;
十七、鼠标图标
public Texture2D texture2D;
Cursor.SetCursor(图标, new Vector2(16, 16), CursorMode.Auto);
使用出现一下情况
解决方法:
十八、URP渲染管线
常用工具
- 网格绘制,雕刻,和地理散射工具
2. 在Unity中构建、编辑和纹理自定义几何体。 使用ProBuilder进行场景关卡设计、原型设计、碰撞网格,所有这些都可以即时进行游戏测试。
高级功能包括UV编辑、顶点颜色、参数化形状和纹理混合。 与ProBuilder的模型导出功能,它很容易调整您的水平在任何外部3D建模套件。
3. 基于URP的Volume
1、Shader Graph核心(遮挡剔除)
- 创建Pipeline Asset渲染管线;
- 插件着色器
- 选着色创建材质球
- 双击着色器进行编辑
- 编辑可编辑渲染管道
效果图:
2、基于可渲染管道UPR创建传送门
- 创建着色器
- 双击着色器进行编辑
2.1 创建节点
2.2使用到的节点Twirl、Multiply,Voronoi、Multiply、Sample Texture2D、power、time
旋转,叠加,Voronoi,叠加、样本Texture2D、控制力、时间控制
2.3创建相关控制变量
效果1
效果2
最后:
- 创建quad
- 把创建好的材质拖给他
效果如图
二十、画辅助线
可以跳到这里看Gizmos变量说明
P1
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.black;
Gizmos.DrawWireSphere(transform.position, 范围);
}
p1效果图
二十、克隆动画
说明:覆盖出来的动画条件一模一样,所以差不多的敌人可以通过这种方法直接覆盖舔加新脚本继成原来的脚本舔加新功能岂不美哉?
二二、绕开敌人的攻击点,免伤害
方法代码:
创建一个静态类
public static class ExtensionMethod
{
private const float distance = 0.5f;
public static bool isFacingTarger(this Transform transform, Transform targer)
{
Vector3 diretion = targer.transform.position - transform.position;
diretion.Normalize();
这个方法返是判断攻击的正前方左右0.5有没有敌人,如果在他攻击扣血点还没触发然后跑到敌人后面就不会受到攻击
var dot = Vector3.Dot(transform.forward, diretion);
return dot > distance;
}
}
说明:可以在敌人砍下的时候跑到敌人后面,这时候就不会受到攻击!
二十三、动画状态机脚本
代码:
第一个参数就是挂载动画上的Animator组件
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
//override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
//{
// 动画开始播放
//}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
//override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
//{
// 动画播放着
//}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
//override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
//{
// 动画播放结束
//}
// OnStateMove is called right after Animator.OnAnimatorMove()
//override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
//{
// // Implement code that processes and affects root motion
//}
// OnStateIK is called right after Animator.OnAnimatorIK()
//override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
//{
// // Implement code that sets up animation IK (inverse kinematics)
//}
二十三、创建响应式文本
步骤:创建Panel >>(text/图片)
- Panel舔加Content Size Fitter && Vertocal layout Group组件
- 如果Panel里面有图片那么舔加Layout Element组件不会受到影响
二十四、不规则物体可以使用MeshCollider
完全贴合