Unity基础 -- 更新中(2.15)

Unity基础

3D数学 – 基础

一些方法
float value01 = Mathf.PI; // Π
int value03 = Mathf.Abs(-2); // 绝对值
int value04 = Mathf.CeilToInt(1.3f); // 向上取整
int value05 = Mathf.FloorToInt(1.6f); // 向下取整
int value06 = Math.Clamp(5, 10, 20); // 钳制函数:在10~20直接返回值,10~20之外返回接近的那个值
int value07 = Mathf.Min(10, 90, 2); // 最小值,参数可变长
int value08 = Mathf.Max(1, 2, 6); // 最大值,参数可变长
float value09 = Mathf.Pow(5, 2); // 幂运算
int value10 = Mathf.RoundToInt(1.5f); // 四舍五入
float value11 = Mathf.Sqrt(4.0f); // 平方根      
插值运算

在这里插入图片描述

三角函数

在这里插入图片描述

在这里插入图片描述

	// 弧度转角度
    float rad = 5;
    float anger = 5 * Mathf.Rad2Deg;

    // 角度转弧度
    anger = 1;
    rad = anger * Mathf.Deg2Rad;

    // 三角函数:参数是弧度值
    anger = 30 * Mathf.Deg2Rad;
    float sin30rad = Mathf.Sin(anger);

    // 反三角函数:返回值是弧度值
    float asin = Mathf.Asin(1);
    print(asin * Mathf.Rad2Deg);
坐标系

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3D数学 – 向量

理解

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

常用函数
// 点乘
Vector3.Dot(dir1, dir2);

// 叉乘
Vector3.Cross(dir1, dir2);

// 角度
Vector3.Angle(dir1, dir2);

// 两点间距离
Vector3.Distance(pos1, pos2);
线性插值

Mathf.Lerp用法相同,只是参数为Vector3

在这里插入图片描述

3D数学 – 四元数

在这里插入图片描述

// 初始化四元数
    Quaternion q = Quaternion.AngleAxis(60, Vector3.right);
    this.transform.rotation = q;

// 欧拉角转四元数
    Vector3 euler = new Vector3(1, 2, 3);
    Quaternion qua = Quaternion.Euler(euler);

// 四元数转欧拉角
    euler = qua.eulerAngles;

在这里插入图片描述

在这里插入图片描述

看向

四元数计算

在这里插入图片描述

延迟函数

  1. 延迟函数

    参数一:函数名 字符串 参数二:延迟时间 单位秒

    注意:延迟函数无法直接调用有参函数,函数名必须是该脚本申明的函数

    Invoke("function", 5);
    
  2. 延迟重复执行函数

    参数一:函数名 字符串 参数二:第一次执行延迟时间 参数三:之后每次执行的间隔时间

    注意:同上

    InvokeRepeating("function", 5, 5);
    
  3. 取消延迟函数

    CancelInvoke(); // 取消该脚本上所有延迟函数
    CancelInvoke("function"); // 取消指定函数名的延迟函数
    
  4. 判断是否有延迟函数

    bool isInvoke = IsInvoking();
    bool isInvoke2 = IsInvoking("function");
    

影响延迟函数:

脚本依附对象失活、脚本失活,延迟函数继续执行

脚本依附对象销毁、脚本销毁,延迟函数继续执行

协同程序

  1. 多线程

    注意:新开的线程无法访问Unity相关对象的内容

    Thread th;
    
    void Start()
    {
         
        th = new Thread(Test); // 创建线程
        th.Start(); // 开启线程
    }
    
    // 线程与Unity编辑器共存亡,所以需要关闭线程
    private void OnDestroy() 
    {
         
        th.Abort(); // 结束线程
        th = null;    
    }
    
    private void Test()
    {
         
        while(true)
        {
         
            Thread.Sleep(1000);
            print("Thread");
        }
    }
    
  2. 协同程序(协程)

    • “假”的多线程,协程不是多线程

    • 将代码分时执行

    • 使用场景:异步加载、下载,场景异步加载,批量创建防止卡顿

    • 与线程的区别:

      ​ 线程:新开一个独立的管道和主线程并行执行

      ​ 协程:新开一个协程在原线程之上开启,进行逻辑的分时分步执行

相关推荐

  1. Python基础----数据容器(持续更新)

    2024-02-16 17:08:01       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-16 17:08:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-16 17:08:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-16 17:08:01       87 阅读
  4. Python语言-面向对象

    2024-02-16 17:08:01       96 阅读

热门阅读

  1. 关于jupyter的一些小笔记

    2024-02-16 17:08:01       49 阅读
  2. 【深度学习】S2 数学基础 P4 概率论

    2024-02-16 17:08:01       56 阅读
  3. 小说创作系统C++

    2024-02-16 17:08:01       52 阅读
  4. 【BIP39和BIP44】

    2024-02-16 17:08:01       51 阅读
  5. 预训练和微调在迁移学习中的作用

    2024-02-16 17:08:01       45 阅读
  6. 【前端工程化面试题】简单说一下 vite 的原理

    2024-02-16 17:08:01       63 阅读
  7. 蓝桥杯(Web大学组)2023省赛真题:视频弹幕

    2024-02-16 17:08:01       59 阅读
  8. 【c/c++】获取时间

    2024-02-16 17:08:01       51 阅读
  9. LInux、源码编译安装

    2024-02-16 17:08:01       49 阅读