同步操作将从 chutianshu/AwesomeUnityTutorial 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
游戏引擎(Game Engine):可以快速制作游戏的软件框架,其中包含处理图像、声音等素材的预制功能,包含物理引擎等等...
小白可以暂时只记住,它是可以帮助我们快速开发游戏的工具
也称为 Unity 3D,特点:易用,功能强大,大幅度提升开发效率
字面意思 unity 管理中心 ,unity 有很多版本,更新很频繁,很多版本并不互相兼容,就需要有一个管理中心来统一管理不同版本的 unity ,unity hub 因此而生。
可简化查找、下载和管理 Unity 项目和安装内容
两种方式:
unity 虽然开源,但并不完全免费,分多个版本,个人版免费,专业版和企业版收费,所以需要许可证激活才能使用。
普通用户学习或非盈利性使用时,应选择个人版,申请对应的许可证激活 unity
具体操作步骤,参照 许可证和激活 官方文档
游戏开发属于软件开发的一个分支,自然需要用到一门编程语言,unity 中,使用 C# ,一个微软公司设计的程序开发语言
C# 编译器就是用来编写 C# 代码,并将其编译成机器可执行程序的编程工具,这里我们使用微软管饭的 Visual studio
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HelloWorld : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnGUI(){
GUI.skin.label.fontSize = 100;
GUI.Label(new Rect(10, 10, Screen.width, Screen.height), "Hello World!");
}
}
Debug.log(要输出的信息....); // 输出的信息必须为字符串类型
Unity 中最基本的游戏元素,默认值包含 Transform 组件(变形组件),可加载其它组件(Component),根据加载的组件不同而显示出不同的特性
注意: 序列化和反序列化时所说的输入输出,目标针对的都是游戏程序运行时的内存
脚本序列化是指:将脚本指定给场景中的任一 Game Object ,就可以在 Inspector 窗口中给该脚本类设置属性的初始值了
在 Unity 中,一个 Game Object 可以同时挂接多个组件,每个组件都可以有不同的功能(用代码脚本组件来实现),这就是最基本的组件式编程
组件式编程一般有下面几个要点:
组件的获取 通过当前游戏对象的 GetComponent() 方法,可以获取指定类型的组件
// 获取当前游戏对象的刚体组件
Rigidbody rigid = this.gameObject.GetComponent<Rigidbody>();
if(rigid == null) //如果不存在
{
//则添加一个新的刚体组件
rigid = this.gameObject.AddComponent<Rigidbody>();
}
组件间通信
同一个 Game Object 上的不同组件间,可以通过 SendMessage 方法,通过名称调用其他组件内的方法,但效率较低且不算安全
组件本身就是 C# 类,所以可以像普通 C# 类那样,使用继承和组合
Unity 默认是单线程的,所以协程就是为了解决单线程问题(需要多线程又没有,会导致需要用多线程时,只能用单线程而造成的代码混乱)而出现的一种代码编写模式,它不是多线程,是一个模拟多线程的伪异步操作,是一种编程技巧。
在传统实时游戏中,在 update 中要延迟执行一些代码,或者满足一定条件后执行一些代码。需要在 update 添加一个计时器,用当前时间来减去前面记录的时间来判断执行。当这种情况越来越多的时候,会添加很多变量和代码,代码就越来越乱
而协程可以说是 unity 的一个框架,为解决这个问题而设计的一个设计模式。套着这个概念来写,让这种代码非常整洁易维护而已。
预制体(预制件) Prefab: 预先配置好的,具备一定功能的的 Game Object 模板,可以重复使用
注意:
- Prefab 创建的 Game Object 更改时,默认并不会影响到 Prefab,除非在右边的 Inspector 窗口中将更改写回 Prefab
- Prefab 的更改会默认同步到用它创建的 Game Object(并未做过更改的)
制作一个游戏,一般需要大量的外部资源,如图形图像素材、声音素材、动画、库等等, Unity 可以方便的导入并管理这些外部资源。
不同的需求,有不同的资源导入管理方式,这里先简单介绍推荐方式
导入后的资源,可以在 Project 窗口中查看并使用
包管理器中,可以管理 Unity 插件,比如:在 Asset Store 中下载的包,都在这里集中安装、管理
//直接用类创建一个新的游戏对象
GameObject gameObject = new GameObject("MyGameObject1");
// 引用项目中的 prefab 或模型
public GameObject prefab;
// 声明一个私有的 游戏对象实例
private GameObject instance;
void Start(){
// 创建实例
instance = Instantiate(prefab);
// 0.1 秒后删除实例
Destroy(instance,0.1f);
}
Unity 中不能直接使用 C# 标准库中的 IO 函数读取资源,必须先将资源放入 Resources 文件夹中,Unity 允许多个不同的 Resources 文件夹在项目的不同路径下
使用 Resources.Load 方法读取资源,用 Instantiate 实例化资源
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。