unity3d-记录案例小点

✨写案例总结的一些知识点,文章如有误请指正,如果觉得对你有用,请点赞收藏关注一波,谢谢支持😘

一、血条和蓝条的状态

  1. RectTransform.sizeDelta
    1. public Vector2 sizeDelta ;
    2. 描述:
      此 RectTransform 相对于锚点之间距离的大小,sizeDelta属性可以获取血条图片的大小,
      如果锚点在一起,则 sizeDelta 与大小相同。如果锚点处于父项四个角的各个角中,则 sizeDelta 是 矩形与其父项相比更大或更小的程度。
    3. sizeDelta修改时不能单独修改x或y

二、 画布设置

1、画布的三种渲染状态

在这里插入图片描述

2、画布的三种模式

  1. 原来的大小(没有响应式,初始的大小UI在屏幕发生变化的情况下就UI就会发生变形)
    在这里插入图片描述
  2. 画布响应式(常用:可以根据屏幕的大小自动相应UI的大小)
    在这里插入图片描述
    3.固定大小
    在这里插入图片描述

三、 圆头像的实现

Canvas->img(外面的框)->img(一张圆图片(添加Mask组件))->img(人物图片)
在这里插入图片描述
效果
在这里插入图片描述
四、UI快速布局

  1. 横向布局:img(Horizontal Layout)->img(N个)

在这里插入图片描述
2. 纵向布局:img(Vertical Layout)->img(N个)

在这里插入图片描述

四、UI接口事件

命名空间: using UnityEngine.EventSystems;
在这里插入图片描述

五、角色碰撞器

  • 描述
    CharacterController 可使您轻松进行受碰撞约束的移动,同时不必处理刚体。
    CharacterController 不受力影响,仅在您调用 Move 函数时才会移动。 然后它执行移动,但受碰撞约束。
  1. 添加组件CharacterController

在这里插入图片描述
2. player.position=>player.Move()

六、单例私有化

在这里插入图片描述

七、字典的使用

  1. 命名空间:using System.Collections.Generic;
  2. 创建字典: 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[含] 之间的随机浮点数(只读)。

十二、刚体

  1. Rigidbody.velocity
    刚体的速度矢量。它表示刚体位置的变化率
  2. 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使用

  1. 检测某一点以2为半斤该圆的任一点检测周围有没有碰撞体;
    Physics2D.OverLapCircle(哪个位子,圆上的一点距离,LayerMask layer)

十六、静态方法

  1. 直接点到组件上的组件或属性
    FindObjectOfType<>();

十七、实现背景与摄像机错位的效果

在这里插入图片描述
十八、手机测试手柄素材

在这里插入图片描述

十四、动画的融合术

在这里插入图片描述
在这里插入图片描述
一一对应
在这里插入图片描述
在这里插入图片描述

十五、Outline组件

说明:外光线,舔加文本清晰度

十六、利用委托舔加方法

public event Action<Vector3> EventVector3;
PlayerMove.Instance.EventVector3 += playerMovement;

十七、鼠标图标

 public Texture2D texture2D;
 Cursor.SetCursor(图标, new Vector2(16, 16), CursorMode.Auto);

使用出现一下情况
在这里插入图片描述
解决方法:
在这里插入图片描述
在这里插入图片描述

十八、URP渲染管线

在这里插入图片描述

常用工具

  1. 网格绘制,雕刻,和地理散射工具

在这里插入图片描述
2. 在Unity中构建、编辑和纹理自定义几何体。 使用ProBuilder进行场景关卡设计、原型设计、碰撞网格,所有这些都可以即时进行游戏测试。
高级功能包括UV编辑、顶点颜色、参数化形状和纹理混合。 与ProBuilder的模型导出功能,它很容易调整您的水平在任何外部3D建模套件。

在这里插入图片描述
3. 基于URP的Volume
在这里插入图片描述

1、Shader Graph核心(遮挡剔除)

  1. 创建Pipeline Asset渲染管线;

在这里插入图片描述

  1. 插件着色器

在这里插入图片描述

  1. 选着色创建材质球

在这里插入图片描述

  1. 双击着色器进行编辑

在这里插入图片描述

  1. 编辑可编辑渲染管道
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

效果图:

在这里插入图片描述

2、基于可渲染管道UPR创建传送门

  1. 创建着色器
    在这里插入图片描述
  2. 双击着色器进行编辑
    2.1 创建节点
    在这里插入图片描述
    2.2使用到的节点Twirl、Multiply,Voronoi、Multiply、Sample Texture2D、power、time
    旋转,叠加,Voronoi,叠加、样本Texture2D、控制力、时间控制
    2.3创建相关控制变量

在这里插入图片描述
效果1
在这里插入图片描述
效果2
在这里插入图片描述

最后:

  1. 创建quad
    在这里插入图片描述
  2. 把创建好的材质拖给他
    在这里插入图片描述

效果如图
在这里插入图片描述

二十、画辅助线

可以跳到这里看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/图片)

  1. Panel舔加Content Size Fitter && Vertocal layout Group组件

在这里插入图片描述

  1. 如果Panel里面有图片那么舔加Layout Element组件不会受到影响

在这里插入图片描述

二十四、不规则物体可以使用MeshCollider

在这里插入图片描述
完全贴合

在这里插入图片描述

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SYFStrive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值