问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity官方开发者社区

创作时间:
作者:
@小白创作中心

Unity官方开发者社区

引用
CSDN
1.
https://unity.csdn.net/6743eef3522b003a546fb2eb.html

伴随游戏行业的兴起,Unity引擎的使用越来越普遍。本文将从零基础开始,详细介绍Unity引擎的入门知识,包括创建工程、工程目录介绍、五个窗口面板、创建代码和场景、基本模型和场景操作、世界坐标系和局部坐标系、工具栏、案例实操作、添加物理组件、代码组件等多个方面。

一、认识Unity引擎

1. Unity相关信息

  • Unity的诞生:Unity引擎最早由David Helgason、Nicholas Francis和Joachim Ante于2003年在丹麦哥本哈根创立。
  • Unity的应用:Unity引擎广泛应用于游戏开发、建筑可视化、汽车设计、影视动画制作等领域。
  • Unity发展:Unity引擎经历了多个版本的迭代,从最初的2D游戏引擎发展成为支持2D和3D游戏开发的跨平台引擎。

2. 下载和安装

本次学习应用用到的软件主要是Unity 2021.2.10f1和VS2019版本。

  • 相关下载地址

  • Unity中国官网:unity.cn

  • 国际官网:unity.com(需要科学上网)

  • 官网:www.unity.com

  • 相关下载教程

  • Unity:https://zhuanlan.zhihu.com/p/433418045

  • VS2019:建议在siki学院《Unity2021零基础入门学习教程 - RollABall》课程资料里下载

  • 关于Unity版本说明

  • LTS(Long Term Support)——长期支持版本

  • Alpha——内测版

  • Beta ——公测版(不稳定,有最新功能,最新更新)

  • 关于不同版本的解释:https://blog.csdn.net/zistxym/article/details/99300504

二、Unity基础知识

1. 创建工程

点击Unity hub,新建即可。提示:若无法新建可能是未登录且没有激活许可证。操作如下

2. 工程目录介绍

在新建完成后会在创建的目录下生成相关工程文件如图所示:

  • Assets:资源(场景脚本模型)
  • Library:库(系统)
  • Logs:日志
  • Packages:导入的包
  • ProjectSettings:工程设置
  • Temp:临时文件(文件过大可以删除部分缓存)
  • UserSettings:设置

3. 五个窗口面板

创建完成后会有5个窗口面板(红色方框)

  • Project:工程面板,存放工程的各种资源。包括:声音资源、模型资源、场景文件、材质、脚本等。
  • Hierarchy:层级面板,展示当前打开的场景里面有哪些东西。(里面的东西称为游戏物体)
  • Inspector:检视面板(或属性面板),查看一个游戏物体由哪些组件组成。
  • Scene:场景面板,显示当前场景的样子
  • Game:游戏面板,场景运行的时候的样子

4. 创建代码和场景

(1)Project > Assets 右键选择create 创建 C# script ,并重命名为“New Name”右键即可打开

Unity支持持的编程语:C#、Mono、JavaScript

(2)如果使用其他版本的编译器需要去单独指定 / 代码不提示也可以用此方法解决

Edit > Preferences > External Tools (附加工具)

在External Script Editor中有俩个选项

Open by file extension——根据文件后缀名采取相应工具打开

Microsoft Visual Studio 2019(这个是自己安装的编译器)

选择“Microsoft Visual Studio 2019”因为unity大多文件是C#

5. Unity中的基本模型和场景操作

(1)如何创建基本模型和如何导入复杂模型

(2)场景基本操作

  • 聚焦:双击游戏物体 或者 F
  • 放大缩小视野:鼠标滚轮
  • 围绕物体旋转:Alt+鼠标左键
  • 使用MoveTool下 移动物体

(3)视野分类

  • Persp 透视视野
  • ISO平行视野

在不同视野下:关于鼠标右键的不同

(4)保存(场景保存、代码保存)

Ctrl + S

6. 世界坐标系和局部坐标系

  • 坐标系:x 左右 y 上下 z前后
  • 局部坐标系:父物体和子物体
  • 单位:Unity里面的坐标是以米为单位的

7. 工具栏

(1)四个工具

  • Q:视图工具(使用鼠标中键可以临时切换到这个恐惧)
  • W:移动工具
  • E:旋转工具
  • R:缩放工具

(2)其他工具

  • Rect Tool Transform Tool Collider Tool

Rect Tool:修改大小——一般2D游戏使用

Transform Tool:WER同时调出

Collider Tool:碰撞器

(3)切换工具

  • 位置工具:Pivot原点 - Center中心

局部和全局坐标切换:Local - Globa

(4)切换工具步移工具

  • 步移工具:一段一段数值移动(快捷键:Ctrl)
  • 条件:世界坐标系下

位置工具:Pivot原点 - Center中心

局部和全局坐标切换:Local - Global

三、案例实操作

1. 创建场景

在project面板右击"Scenes"文件create>scence

(1)创建地面

  • 点击创建好的“Main Scene”
  • 在Hierarchy面板中右键3D object>Plane
  • 点击Plane,inspector面板会显示相关物件属性
  • Position位置设置为(0.0.0)
  • scale X,Z放大2倍
  • 创建材质使Plane更改颜色和材质
  • 在assets文件下创建文件“Materials”右键此文件创建Ground材质
  • 提示:创建的Materials组件也可以直接拖动到场景里的任何物件
  • 也可以点击目标物体在“Inspector”面板,Materials属性进行添加

Mesh Filter:控制形状模型

Mesh Renderer:在网格上渲染

smooththness:控制光滑程度(值越大越光滑)

例如:smooththness为1

smooththness为0

相关板块间的关系

(2)创建墙体

提示:创建的Materials组件也可以直接拖动到场景里的任何物件

  • 在Hierarchy面板中右键3D object>Cuba
  • 建立一个立方体重命名为“wall”,调整立方体的“Scale”并根据需添加材质

(3)预制体

创建多个相同物体,可以创建预制体

  • 在“Hierarchy”面板下创建一个物体,重命名为“wall调整好各个参数”
  • 创建一个文件“Prefabs”用于存放预制体
  • 将物体拖动在文件下,需要用到相同物体可以直接拖出预制体

(4)构建互动物体

根据前文提到的步骤,通过预制体或者直接复制的方式生成多个相同物体

2. 添加物理组件

(1)碰撞检测

  • 在Hierarchy面板中的最下方点击“Add Component”
  • 搜索“Sphere Collider”点击即可添加此组件

(2)添加物理组件

  • 在Hierarchy面板中的最下方点击“Add Component”,搜索“Rigidbody”钢铁组件进行添加

添加刚体组件作用:模拟物理效果(重力、摩擦力、弹力、动力等),可以通过刚体控制小球的运动

渲染模型和碰撞模型需要分开

同时碰撞监测消耗越小,运行越流畅

这里的模型一套精细建模用于渲染 ,一套低模碰撞监测穿模

减少穿模情况

调整摄像机位置

3. 代码组件

建议代码零基础学生

模仿不求甚解, 后期学习C#语法基础

(1)添加删除代码组件

  • 添加两种方式:
  • a、在Project里面
  • b、在Inspector面板
  • 删除两种方式:
  • a、删除代码
  • b、删除组件

(2)脚本的基本结构

a、引用

b、脚本名字(类名)(类名和脚本名保持一致)

c、什么是方法

d、Start方法和Update方法 - 系统方法(事件方法)

(3)控制台面板 - Console

a、怎么打开—“Crtl+shift+C” 可以快速唤出可控制面板

b、怎么输出—

c、收缩输出—

d、注释——

(4)在代码中获取刚体组件

在Player脚本中

  • 第一种方法 - 通过代码获取

private Rigidbody rd;

rd = rd = GetComponent();

  • 第二种方法 - 通过拖拽

public Rigidbody rd;

(5)给小球添加力

  • a、小球的碰撞监测——在player脚本里写一个系统事件

private void OnCollisionEnter(Collision collision)
{
Debug.Log("发生碰撞了 OnCollisionEnter");
if(collision.gameObject.tag == "Food")
{
Destroy(collision.gameObject);
}
}

collision collision来检测来储存碰撞到的信息

添加标签 “Food”

(6)让物体旋转

在预制体里添加“food”脚本,每个实例都会有此脚本

transform.Rotate是旋转

vector3.up围绕自身上方的旋转

总结

未完工暂无

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号