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的值即可

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jetson Orin Nano安装OpenCV带cuda加速版本的全过程

安装过程 使用jetpack安装的jetson,自带了opencv,但是没有cuda加速的,输入opencv_version 使用jtop查看,可以确认自带的opencv是没用cuda的 卸载opencv,先查看有哪些包 pip3 list | grep opencv opencv-python 然后卸…

从规则到神经网络:机器翻译技术的演化之路

文章目录 从规则到神经网络:机器翻译技术的演化之路一、概述1. 机器翻译的历史与发展2. 神经机器翻译的兴起3. 技术对现代社会的影响 二、机器翻译的核心技术1. 规则基础的机器翻译(Rule-Based Machine Translation, RBMT)2. 统计机器翻译&am…

文献分享四:(基础)Pyroelectric drift of integrated-optical LiNbO3 modulators

文献来源——S. M. Kostritskii, Yu. N. Korkishko, V. A. Fedorov & A. V. Yatsenko (2021) Pyroelectric drift of integrated-optical LiNbO3 modulators, Ferroelectrics, 574:1, 170-178, DOI: 10.1080/00150193.2021.1888062 本文分析了我们之所以需要偏置电路的原因…

力扣刷MySQL-第六弹(详细讲解)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出…

【Linux、C】服务程序的调度

这一节中用到的技术点有&#xff1a;信号、多进程、exec函数 exec函数族 exec的本质 exec是用参数中指定的程序替换了当前进程的正文段、数据段、堆和栈。 如果调用失败会继续运行当前进程 #include <stdio.h> #include <stdlib.h> #include <string.h> #in…

常用排序算法总结(直接插入排序、选择排序、冒泡排序、堆排序、快速排序、希尔排序、归并排序)

目录 一. 直接插入排序 二:选择排序 三:冒泡排序 四.堆排序 五:希尔排序 六:快速排序(递归与非递归) 七.归并排序(递归与非递归) 一. 直接插入排序 &#x1f31f;排序思路 直接插入排序的基本原理是将一条记录插入到已排好的有序表中&#xff0c;从而得到一个新的、记录…

PaddleNLP评论观点抽取和属性级情感分析

项目地址&#xff1a;PaddleNLP评论观点抽取和属性级情感分析 - 飞桨AI Studio星河社区 (baidu.com) 情感分析旨在对带有情感色彩的主观性文本进行分析、处理、归纳和推理&#xff0c;其广泛应用于消费决策、舆情分析、个性化推荐等领域&#xff0c;具有很高的商业价值。 依托…

mysql综合实验

USE dept_emp; CREATE TABLE dept (deptno INT(2) NOT NULL COMMENT 部门编号,dname VARCHAR (15) COMMENT 部门名称,loc VARCHAR (20) COMMENT 地理位置 );-- 添加主键 ALTER TABLE dept ADD PRIMARY KEY (deptno); INSERT INTO dept (deptno,dname,loc)VALUES (10,财务…

Windows 11 UEFI引导修复的方法有哪些?

若Windows 11 UEFI 引导加载程序损坏了&#xff0c;您的电脑将无法启动&#xff0c;那么Win11怎么修复UEFI引导&#xff1f;下面我们就来了解一下。 通过自动修复进行UEFI引导修复 1. 将可启动U盘连接到损坏的电脑&#xff0c;进入BIOS设置您的电脑从U盘启动电脑。然后&#x…

TypeScript语法总结

JavaScript 与 TypeScript 的区别 TypeScript 是 JavaScript 的超集&#xff0c;扩展了 JavaScript 的语法&#xff0c;因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改&#xff0c;TypeScript 通过类型注解提供编译时的静态类型检查。 TypeScript 可处理已…

【论文解读】LERF:语言嵌入的辐射场(ICCV 2023 Oral)

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2303.09553 项目主页&#xff1a;https://lerf.io](https://lerf.io 图 1&#xff1a;语言嵌入辐射场 (LERF)。 LERF 将 CLIP 表示建立在密集、多尺度的 3D 场中。…

Unity导出Android项目踩坑记录

导出的时候需要注意以下地方的配置&#xff1a; 1、buildSetting-> 设置ExportProject 2、buildsetting ->playerSetting ->设置IL2CPP 3、设置ndk edit->preferences->external tools->ndk 如果unity的ndk版本和android项目里的ndk版本不一致会报错&…

跨平台开发:构建适配多设备的直播电商APP

如今&#xff0c;跨平台开发成为构建适配多设备的直播电商APP的关键之一。本文将深入探讨跨平台开发的优势、选择适当的技术栈以及解决多设备适配的挑战。 一、跨平台开发的优势 1.1节省开发成本 通过一套代码即可在iOS和Android等多个平台上运行&#xff0c;极大地提高了开…

docker安装 mysql 8.0.32

首先下载 mysql 其次如果虚拟机以前安过mysql 需要把mysql关闭 命令 永久关闭mysql 但是当前不生效 需要重启虚拟机 systemctl enable mysqld 如果不想重启虚拟机 可以执行 systemctl stop mysqld //指定版本 docker pull mysql:8.0.32 // 拉取最新的…

Docker-安装实践(mysql,redis集群,tomcat)

docker实践(提供几个安装案例&#xff09; 安装Tomcat # 拉取镜像,可以指定标签不指定默认为最新 docker pull tomcat docker run -itd -p 8080:8080 --name tomcat tomcat:latest #这样内部默认80端口&#xff0c;主机的映射端口会随机分配一个 docker run -itd -P tomcat…

mac-hadoop3.3.6 源码构建以及踩坑记录

1. 为什么需要构建源码 因为hadoop的可执行文件 是在专门的机器上编译的 其中native库 不一定能适用于每个机器 导致在启动hadoop过程中 出现烦人的警告 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes w…

分类预测 | Matlab实现WOA(海象)-XGboost分类【24年新算法】基于海象优化算法(WOA)优化XGBoost的数据分类预测

分类预测 | Matlab实现WOA(海象)-XGboost分类【24年新算法】基于海象优化算法(WOA)优化XGBoost的数据分类预测 目录 分类预测 | Matlab实现WOA(海象)-XGboost分类【24年新算法】基于海象优化算法(WOA)优化XGBoost的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本…

mariadb数据库从入门到精通

mariadb数据库的安装以及安全初始化 mariadb数据库的安装以及安全初始化 mariadb数据库的安装以及安全初始化一、实验前提二、mariadb数据库的安装三、mariadb数据库安全初始化3.1 设定数据库基本的安全初始化3.2关闭对外开放端口 系列文章目录一、查看数据库二、进入库并且查看…

什么是安全SCDN,有什么作用?

前两天有个站长被朋友推荐联系到了德迅云安全&#xff0c;想要对自己网站做一些安全防护&#xff0c;聊天中问及到了安全SCDN是什么意思&#xff0c;有哪些作用&#xff1f;那么德迅云安全今天就来简单讲述一下安全SCDN&#xff0c;来了解下什么是安全SCDN&#xff0c;以及它有…

Pycharm无法刷新远程解释器的框架: Can‘t get remote credentials for deployment server

在Pycharm上部署项目到远程服务器&#xff0c;有时候需要启动SSH会话&#xff0c;启动的时候发现没反应&#xff0c;且事件日志显示&#xff1a;无法刷新远程解释器的框架: Can’t get remote credentials for deployment server 观察pycharm界面最下边&#xff0c;发现“无默…