Unity3D学习之Unity基础

文章目录

  • 1. 第一部分:MONO中的重要内容
  • 2. 延时函数
    • 2.1 什么是延时函数
    • 2.2 延时函数的使用
      • 2.2.1 延时重复函数
      • 2.2.2 取消延迟函数
      • 2.2.3 判断是否有延迟函数开启
      • 2.2.4 延迟函数和依附对象的关系
  • 3 协同程序
    • 3.1 Unity中的多线程
    • 3.2 协同程序
    • 3.3 协程的使用
      • 3.3.1 关闭协程
      • 3.3.2 协同可以配合死循环
      • 3.3.3 yield return的内容
      • 3.3.4 失活后组件的影响
      • 3.3.5 用协程写一个计时器
      • 3.3.6 创建100000个随机位置方块但不明显卡顿
    • 3.4 协程原理
      • 3.4.1 生成协程函数
    • 3.5 协程调度器
  • 4 第二部分:Resources资源动态加载
    • 4.1 特殊文件夹
    • 4.1.1 获得工程路径
      • 4.1.2 Resources 资源文件夹
      • 4.1.3 StreamingAssets资源流动文件夹
      • 4.1.4 persistentDataPath 持久数据文件夹
      • 4.1.5 Plugins 插件文件夹
      • 4.1.6 Editor 编辑器文件夹
      • 4.1.7 默认资源文件夹 Standard Asserts
    • 4.2 Resources资源同步加载
      • 4.2.1 动态加载的作用
      • 4.2.2 常用资源类型
      • 4.2.3 资源同步加载 普通方法
    • 4.3 资源异步加载
      • 4.3.1 异步加载是什么
      • 4.3.2 异步加载的方法
      • 4.3.3 通过协程
      • 4.3.4 完成线性加载和协程的异同
      • 4.3.5 封装一个简单的资源管理器
      • 4.4 Resources卸载资源
      • 4.4.1 如何手动释放资源
  • 5 场景异步切换
    • 5.1 通过事件回调函数异步加载
    • 5.2 通过协程异步加载
    • 5.3 简单的场景管理器
  • 6 LineRenderer 画线功能
    • 6.1 LineRenderer
    • 6.2 Line Renderer组件
    • 6.3 代码添加线段
    • 6.4 画一个圆
    • 6.5 长按鼠标使用LineRenderer画出鼠标移动轨迹
  • 7 范围检测
    • 7.1 范围检测
    • 7.2 如何进行范围检测
    • 7.2.1 盒状碰撞器
      • 7.2.2 球状碰撞器
      • 7.2.3 胶囊碰撞器
    • 7.3 模拟游戏碰撞检测
  • 8 射线检测
    • 8.1 射线对象
    • 8.2 碰撞检测函数
      • 8.2.1 获得不到碰撞到了谁
      • 8.2.2 获取相交的单个物体信息
    • 8.3 模拟射击游戏打到墙
    • 8.4 实现鼠标拖动物体


1. 第一部分:MONO中的重要内容

在这里插入图片描述

2. 延时函数

2.1 什么是延时函数

在这里插入图片描述

2.2 延时函数的使用

在这里插入图片描述
在这里插入图片描述
需要传入参数的函数需要包裹
在这里插入图片描述
在这里插入图片描述
否则会报错

在这里插入图片描述
写一个函数包裹
不能直接调用其他对象的函数,也是需要包裹在无参函数中

2.2.1 延时重复函数

在这里插入图片描述

2.2.2 取消延迟函数

在这里插入图片描述
是取消所有延时函数
在这里插入图片描述

取消指定函数

2.2.3 判断是否有延迟函数开启

在这里插入图片描述

2.2.4 延迟函数和依附对象的关系

在这里插入图片描述

1)失活,不会影响函数继续进行
2)对象删除或者脚本删除,不会继续延迟函数

3 协同程序

3.1 Unity中的多线程

在这里插入图片描述

在这里插入图片描述
unity一般多线程用法

用一个中间商 ,比如Queue
在这里插入图片描述
如果有数据需要复线程进行处理,放入queue2中,在update中进行判断,
如果有则传入复线程,然后进行计算后放入另一个queue中
在这里插入图片描述
主线程判断,如果子线程有产出,则取出来用
在这里插入图片描述

3.2 协同程序

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

3.3 协程的使用

在这里插入图片描述
这句的意思就是 打印i之后 再等待5秒后 再打印str

在这里插入图片描述
把逻辑分成了两部分,yield return是分界线
yield return 可以多个
有多少个相当于把代码分成了n+1份

在这里插入图片描述

协程函数可以开启多个
在这里插入图片描述

3.3.1 关闭协程

在这里插入图片描述

3.3.2 协同可以配合死循环

在这里插入图片描述
不会卡死主线程

3.3.3 yield return的内容

在这里插入图片描述

3.3.4 失活后组件的影响

在这里插入图片描述
只失活脚本,协程还是继续

3.3.5 用协程写一个计时器

在这里插入图片描述

在这里插入图片描述

3.3.6 创建100000个随机位置方块但不明显卡顿

改为分步创建

在这里插入图片描述
等一帧创建

在这里插入图片描述

3.4 协程原理

在这里插入图片描述

3.4.1 生成协程函数

在这里插入图片描述
在这里插入图片描述
MoveNext 是执行到下一个yield return 为止

在这里插入图片描述

在这里插入图片描述
可以通过MoveNext返回的bool值判断是否执行完

在这里插入图片描述

3.5 协程调度器

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

4 第二部分:Resources资源动态加载

4.1 特殊文件夹

4.1.1 获得工程路径

在这里插入图片描述

在这里插入图片描述

4.1.2 Resources 资源文件夹

需要手动创建,并且名字不能错
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.1.3 StreamingAssets资源流动文件夹

需要手动创建,PC可读可写,手机只可读
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1.4 persistentDataPath 持久数据文件夹

不需要手动创建,可读可写,比较重要,做热更新有用
在这里插入图片描述

在这里插入图片描述

4.1.5 Plugins 插件文件夹

在这里插入图片描述

4.1.6 Editor 编辑器文件夹

需要手动创建
在这里插入图片描述

在这里插入图片描述

4.1.7 默认资源文件夹 Standard Asserts

在这里插入图片描述

4.2 Resources资源同步加载

4.2.1 动态加载的作用

在这里插入图片描述

4.2.2 常用资源类型

在这里插入图片描述

4.2.3 资源同步加载 普通方法

1) Object文件
记得要把资源放在Resources文件夹内

  1. 把资源文件夹加载在内存中
  2. 实例化对象
    在这里插入图片描述
    Resources文件夹可以有多个,通过API加载时,会自己去同名Resources文件夹离找资源
    在这里插入图片描述

在这里插入图片描述
2)音效文件 AudioClip
可以在Resources文件夹内创建文件夹
在这里插入图片描述在这里插入图片描述

3)文本资源
在这里插入图片描述
在这里插入图片描述
4) 图片资源
在这里插入图片描述
在这里插入图片描述
5)其他类型之后讨论
6) 同名文件不同类型的文件加载
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 资源异步加载

同步加载会因为 主线程中每一帧跑不完资源,导致每一秒跑不完60帧,所以掉帧

4.3.1 异步加载是什么

开一个新线程进行内存加载
在这里插入图片描述

4.3.2 异步加载的方法

异步加载 不能马上得到资源,至少要等一帧
这句代码表示unity在代码内部开线程进行资源下载
在这里插入图片描述

监听结束后,马上进行一个资源下载结束的一个 事件 completed监听

加载完成后,资源存在了assert中
在这里插入图片描述

可以在 委托中加入一个函数
在这里插入图片描述
在函数中处理 得到资源后所做的事情
在这里插入图片描述
这里是做了实例化

在这里插入图片描述
一定要等completed后,才能使用
一定要在回调中监听

4.3.3 通过协程

在这里插入图片描述

Unity会判断ResourceRequest类型,要等判断加载完后再继续

在这里插入图片描述
还可以通过isDone函数 判断是否加载完
在这里插入图片描述
在这里插入图片描述

4.3.4 完成线性加载和协程的异同

在这里插入图片描述

4.3.5 封装一个简单的资源管理器

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

4.4 Resources卸载资源

在这里插入图片描述

4.4.1 如何手动释放资源

在这里插入图片描述

5 场景异步切换

在这里插入图片描述

5.1 通过事件回调函数异步加载

在这里插入图片描述
是存储在了unity的事件中,所以切换场景时不会被删除

5.2 通过协程异步加载

在这里插入图片描述
因为挂载脚本的object在切换场景被删除,所以协程被删除

在这里插入图片描述
所以需要切换场景时不会被移除
在这里插入图片描述
离开循环后,就认为场景加载结束
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3 简单的场景管理器

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

6 LineRenderer 画线功能

6.1 LineRenderer

在这里插入图片描述

6.2 Line Renderer组件

在这里插入图片描述
Position是点
在这里插入图片描述
第一个点和第二个点相连,第二个点连第三个点,以此类推

在这里插入图片描述
勾上loop后,首尾相连
在这里插入图片描述
width改粗细
在这里插入图片描述
添加曲线
右键添加key,改变首尾点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
是否使用世界坐标系
材质球一般不是我们来搞

6.3 代码添加线段

在这里插入图片描述

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

6.4 画一个圆

在这里插入图片描述

6.5 长按鼠标使用LineRenderer画出鼠标移动轨迹

在这里插入图片描述

在这里插入图片描述
每次都画一个新线
在这里插入图片描述

7 范围检测

在这里插入图片描述

7.1 范围检测

在这里插入图片描述

7.2 如何进行范围检测

7.2.1 盒状碰撞器

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

在这里插入图片描述

一个数字代表n层的组合

在这里插入图片描述

7.2.2 球状碰撞器

在这里插入图片描述

7.2.3 胶囊碰撞器

在这里插入图片描述

7.3 模拟游戏碰撞检测

在这里插入图片描述

在这里插入图片描述
1)

在这里插入图片描述

创建出的立方体检测范围是这样的
在这里插入图片描述
改一下创建的角度
在这里插入图片描述
在这里插入图片描述
要记得改角度

2)
在这里插入图片描述
在这里插入图片描述
3)
在这里插入图片描述

8 射线检测

在这里插入图片描述

8.1 射线对象

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

8.2 碰撞检测函数

在这里插入图片描述

8.2.1 获得不到碰撞到了谁

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

8.2.2 获取相交的单个物体信息

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

8.3 模拟射击游戏打到墙

在这里插入图片描述

链接:https://pan.baidu.com/s/1bDzl9AgKxWVU_yygz6PT4Q
提取码:1111

在这里插入图片描述
把资源放到Resources文件夹中

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

8.4 实现鼠标拖动物体

在这里插入图片描述
在这里插入图片描述
让物体在在地板
在这里插入图片描述
在这里插入图片描述
这样设置会让物体在地上嵌住
设置一下position的值即可

在这里插入图片描述
检测的时候检测的方块的层级
拖动的时候检测的是地板的层级

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三课:GPT

文章目录 第三课:GPT1、学习总结:GPT出现的原因GPT的方法原理目前存在的问题无监督的预训练优化目标模型结构 监督微调课程ppt及代码地址 2、学习心得:3、经验分享:4、课程反馈:5、使用MindSpore昇思的体验和反馈&…

【Spring源码分析】扫描并注册BeanDefinition逻辑

扫描并注册BeanDefinition逻辑 一、ClassPathBeanDefinitionScanner 扫描源码分析doScan 扫描的具体逻辑findCandidateComponents 方法解析generateBeanName 方法解析checkCandidate 方法解析 二、总结 阅读此需阅读下面这些博客先【Spring源码分析】Bean的元数据和一些Spring的…

SpringBoot项目中简单使用虚拟机Redis

目录 步骤大致如下: 一.在pom文件中加入redis依赖 二.在虚拟机上打开我们下载好的Redis。开启服务器端并获取虚拟机ip地址 三.在项目配置。 四:使用redis 测试 redis是一个以键值对存储的NoSQL。被数百万开发人员用作缓存、矢量数据库、文档数据库、…

AcWing 68:0到n-1中缺失的数字 ← 二分

【题目来源】https://www.acwing.com/problem/content/64/【题目描述】 一个长度为 n−1 的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0 到 n−1 之内。 在范围 0 到 n−1 的 n 个数字中有且只有一个数字不在该数组中,请找出这个数字。【…

vivado 定义板文件板

定义板文件板 &#xff1c;board&#xff1e;标记是板文件的根。它包括识别基本信息的属性关于董事会。 <board schema_version"2.1" vendor"xilinx.com" name"kc705" display_name"Kintex-7 KC705 Evaluation Platform" url&qu…

用C语言实现简单的三子棋游戏

目录 1 -> 模块简介 2 -> test.c 3 -> game.c 4 -> game.h 1 -> 模块简介 test.c:测试游戏逻辑 game.c: 函数的实现 game.h:函数的声明 2 -> test.c #define _CRT_SECURE_NO_WARNINGS 1#include "game.h";void menu() {printf("****…

Harmony Ble蓝牙App(四)描述符

Harmony Ble蓝牙App&#xff08;四&#xff09;描述符 前言正文一、优化二、描述① 概念② 描述提供者③ 显示描述符 三、源码 前言 上一篇中了解了特性和属性&#xff0c;同时显示设备蓝牙服务下的特性和属性&#xff0c;本文中就需要来使用这些特性和属性来完成一些功能。 正…

FaFu--练习复盘--1

1、输出图形及二维数组应用 1.1.输出图形 描述 编写程序打印n行如下图形&#xff0c;其中1≤n≤500。 输入用例 7 输出用例 具体实现 #include"stdio.h" int main(){int n,i,j;scanf("%d",&n);for(i 1; i< n;…

软考系分之计算机网络通信方向、同步和交换

文章目录 1、概述2、通信方向和同步3、交换方式4、总结 1、概述 本篇依旧是一图概括主要考察的知识点&#xff0c;包括通信方向&#xff08;单工、半双工、全双工&#xff09;&#xff0c;同步方式和数据交换等。 2、通信方向和同步 通信方向&#xff08;单工、半双工、全双工…

【react】创建react项目+项目结构

使用create-react-app快速搭建开发环境 create-react-app是一个快速创建React开发环境的工具&#xff0c;底层由Webpack构建&#xff0c;封装了配置细节 npx create-react-app react_hm执行命令后开始创建 创建好执行cd react_hm npm start 当看到webpack compiled successfu…

spring boot shardingsphere mybatis-plus druid mysql 搭建mysql数据库读写分离架构

spring boot shardingsphere mybatis-plus druid mysql 搭建mysql数据库读写分离架构 ##关于window mysql主从搭建简单教程 传送门 window mysql5.7 搭建主从同步环境-CSDN博客 ##父pom.xml <?xml version"1.0" encoding"UTF-8"?> <project…

傲空间私有部署Windows指南

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 安装 docker 请下载对应的 Docker&#xff0c;安装完成后启动。 Docker Desktop for Windows…

领略指针之妙

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

MySQL主从集群

MySQL主从集群 主从模式、集群模式&#xff0c;都是在一个项目中使用多个mysql节点进行存储和读取数据。 当单机模式部署&#xff0c;不满足安全性、高可用、高并发等需求的时候&#xff0c;就需要考虑主从模式或者集群模式部署。 什么是主从模式&#xff1f; 主从模式&…

[3D]菜板上的鱼

本来想画条鲨鱼&#xff0c;结果成了条菜板上的鱼。 VS&#xff01; ** VS&#xff01; ** 【扭曲】更像菜板上的鱼了。

[C#]winform部署openvino官方提供的人脸检测模型

【官方框架地址】 https://github.com/sdcb/OpenVINO.NET 【框架介绍】 OpenVINO&#xff08;Open Visual Inference & Neural Network Optimization&#xff09;是一个由Intel推出的&#xff0c;针对计算机视觉和机器学习任务的开源工具套件。通过优化神经网络&#xff…

C++设计模式之 模板方法模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是模板方法模式&#xff08;第18种设计模式&#xff09; 模板方法模式&#xff0…

【MySQL】——关系数据库标准语言SQL(大纲)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

51单片机8*8点阵屏

8*8点阵屏 8*8点阵屏是一种LED显示屏&#xff0c;它由8行和8列的LED灯组成。每个LED灯的开闭状态都可以独立控制&#xff0c;从而可以显示出数字、字母、符号、图形等信息。 8*8点阵屏的原理是通过行列扫描的方式&#xff0c;控制LED灯的亮灭&#xff0c;从而显示出所需的图案或…

多线程编程常见面试题讲解(锁策略,CAS策略,synchronized原理,JUC组件,集合类)

&#x1f495;"跑起来就有意义"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;多线程编程常见面试题讲解 hello各位朋友们,最近笔者刚刚结束了学校的期末考试,现在回来继续更新啦!!! 今天要学习的是多线程常见面试题讲解,这些内容都是面试中常考的…