游戏开发

         游戏开发是一个多学科交叉的领域,需要一系列不同的技能。以下是一些基本技能,它们对于进入游戏开发行业至关重要,以下是需要的基础技术:

一. Unity学前

1.C#基础

1.1、数据类型
  • 值类型
  • 引用类型
  • 指针类型
  • 装箱与拆箱
1.2、变量
  • 定义
  • 初始化
1.3、常量
  • 定义
  • 引用
1.4、运算符
  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
1.5、判断
  • if 语句
  • if … else语句
  • 嵌套 if 语句
  • switch 语句
  • 嵌套 switch 语句
  • ?: 条件运算符
1.6、循环
  • while 循环
  • for/foreach 循环
  • do … while 循环
  • 嵌套循环
  • break 语句
  • continue 语句
1.7、数组
  • 声明
  • 初始化
  • 赋值
  • 访问
  • 遍历
  • 多维数组
  • Array与ArrayList的区别
1.8、枚举
  • 声明
  • 访问
  • 与int、string的转换
  • 判断枚举是否包含id
1.9、字符串
  • 字符串比较
  • 字符串替换
  • 字符串连接
  • 判断是否含有字符串
  • 复制字符串
  • 判断是否是以某个字符串结尾
  • 判断是否是以某个字符串开头
  • 字符串判等
  • 字符串格式化
  • 求索引
  • 字符串判空
  • 使用分隔符连接字符串数组
  • 使用分隔符分割字符串
  • 插入字符串
  • 移除字符串
  • 转char[]
  • 大小写转换
  • 去除前后空白字符
1.10、命名空间
  • 定义
  • using
  • 嵌套命名空间
1.11、类
  • 定义
  • 成员函数
  • 构造函数
  • 析构函数
  • 静态成员
  • 密封类
  • 静态类
1.12、结构体
  • 定义
  • 特点
  • 类与结构体的区别
1.13、接口
  • 定义
  • 继承
1.14、方法
  • 定义
  • 调用
  • 递归
  • ref与out
  • 不定参数
1.15、封装
  • 访问修饰符
  • 类与结构体的区别
1.16、继承
  • 基类与派生类
  • 接口多继承
  • 抽象类与接口区别
1.17、多态性
  • 函数重载
  • 运算符重载
  • 抽象类
  • 虚方法
1.18、运算符重载
  • 定义
  • 执行
1.19、IO操作
  • File类
  • Directory类
  • Path类
  • FileStream类
  • StreamReader类
  • StreamWriter类
  • BinaryReader类
  • BinaryWriter类
1.20、预处理
  • #define
  • #undef
  • #if
  • #else
  • #elif
  • #endif
  • #region
  • #endregion
1.21、异常处理
  • try、catch、finally 、throw
  • 异常类
  • 自定义异常

2.C#进阶

2.1、Attribute特性
  • 预定义特性
    • AttributeUsage
    • Conditional
    • Obsolete
  • 自定义特性
    • 声明
    • 构建
    • 应用
2.2、反射
  • 概念
  • 原理
  • 用途
  • 优缺点
  • 使用
2.3、属性
  • get/set访问器
  • 抽象属性
2.4、索引器
  • this[int index]
  • 用途
  • 重载索引器
2.5、委托
  • 概念
  • 用途
  • 声明
  • 实例化
  • 委托多播
2.6、事件
  • 概念
  • 用途
  • 声明
  • 使用
  • 事件与委托的区别
2.7、集合
  • ArrayList
  • Hashtable
  • SortedList
  • Stack
  • Queue
  • BitArray
2.8、泛型
  • 特性
  • 泛型类
  • 泛型方法
  • 泛型委托
  • 泛型接口
  • 泛型约束
2.9、匿名方法
  • 概念
  • 语法
  • 委托与匿名方法
  • Lambda表达式
2.10、不安全代码
  • unsafe
  • 托管代码与非托管代码
2.11、正则表达式
  • 字符转义
    • \r
    • \n
    • \b
    • \t
  • 字符类
    • [character_group]
    • [^character_group]
    • [first - last]
    • \w与\W
    • \s与\S
    • \d与\D
  • 定位符
    • ^
    • $
    • \A
    • \Z
    • \z
    • \G
    • \b
    • \B
  • 限定符
    • *
    • +
    • {n}
    • {n,}
    • {n, m}
  • Regex类
2.12、多线程
  • 线程生命周期
  • 创建线程
  • 暂停线程
  • 销毁线程

二. Unity基础知识

1. 工程目录介绍

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

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

2. 五个窗口面板

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

Project:工程面板,存放工程的各种资源。包括:声音资源、模型资源、场景文件、材质、脚本等。

Hierarchy:层级面板,展示当前打开的场景里面有哪些东西。(里面的东西称为游戏物体)

Inspector:检视面板(或属性面板),查看一个游戏物体由哪些组件组成。
场景 -> 多个游戏物体 -> 多个组件

Scene:场景面板,显示当前场景的样子
鼠标中键:平移视角
鼠标右键:旋转视角(环顾四周),围绕自身旋转
Alt+鼠标左键:渲染视角,围绕当前视角前方位置

Game:游戏面板,场景运行的时候的样子

Scene文件下meta文件不可删除
在这里插入图片描述
右上角的layout也可以修改布局
在这里插入图片描述

3. 创建代码和场景

Project > Assets 右键选择create 创建 C# script ,并重命名为“New Name”右键即可打开
     Unity支持持的编程语:C#、Mono、JavaScript 

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

(1)如何创建基本模型和如何导入复杂模型
(2)场景基本操作

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

(3)视野分类

 Persp 透视视野 ISO平行视野  
 在不同视野下:关于鼠标右键的不同

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

 Ctrl + S

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

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

6. 工具栏

(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)  
 条件:世界坐标系下  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a9cff43926fc406397d29b4cc5f4a689.png)  
 位置工具: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材质

 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、代码组件

(1)添加删除代码组件

①添加两种方式:
a、在Project里面
Project > Assets 右键选择create 创建 C# script ,并重命名为“New Name”右键即可打开

b、在Inspector面板
在Inspector面板最低端点击“Add Component”添加组件

②删除两种方式:
a、删除代码
b、删除组件

(2)脚本的基本结构

 a、引用  
 b、脚本名字(类名)(类名和脚本名保持一致)  
 c、什么是方法  
 d、Start方法和Update方法 - 系统方法(事件方法)  

(3)控制台面板 - Console

 a、怎么打开—“Crtl+shift+C” 可以快速唤出可控制面板  
 b、怎么输出—  
 c、收缩输出—  
 d、注释——

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

在Player脚本中
a、第一种方法 - 通过代码获取

private Rigidbody rd;
rd = rd = GetComponent<Rigidbody>();

b、第二种方法 - 通过拖拽

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围绕自身上方的旋转

四. Unity软件游戏开发顺序

  • 项目规划和设计:

在编写代码或放置3D模型之前,首先进行项目规划和设计。包括确定游戏的概念、玩法、故事、目标和视觉风格。

  • 创建3D模型:

在项目早期阶段,先开始创建好3D模型和其他游戏资产,如纹理、动画和特效。

  • 设计unity项目:

创建新的Unity项目,并设置基本的项目结构,包括文件夹和子文件夹,以组织和管理资源。

  • 导入3D模型:

将3D模型和其他资产导入Unity。这要在编写代码之前完成,因为代码通常需要引用这些资产。

  • 编写代码:

开始编写代码来实现游戏逻辑、控制游戏对象的行为、处理用户输入等。代码编写可以与3D模型的导入和设置并行进行。

面向对象编程(OOP)的基础是类(Class)和对象(Object)。在游戏开发中,几乎所有的元素都可以看作是对象,比如角色、道具、敌人等等。类是一种定义对象属性和行为的模板或蓝图。游戏中的每个对象都是根据某个类创建出来的实例。

以下是一个简单的C#类的例子:

public class Player
{
    public string Name { get; set; }
    public int Health { get; set; }
    public int AttackPower { get; set; }
 
    public void Attack()
    {
        // 实现攻击的逻辑
    }
}

       在这个例子中,创建一个名为myPlayer的玩家对象,并设置了玩家的名称、健康值(Health)和攻击力(AttackPower)。然后调用了myPlayerAttack方法。

using System;

// 定义Player类
public class Player
{
    // 玩家的属性
    public string Name { get; set; }
    public int Health { get; set; }
    public int AttackPower { get; set; }

    // 玩家的构造函数
    public Player()
    {
        // 这里可以初始化默认值
    }

    // 玩家的攻击方法
    public void Attack()
    {
        // 这里实现攻击逻辑
        Console.WriteLine($"{Name} attacks with a power of {AttackPower}!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 创建Player类的实例
        Player myPlayer = new Player();
        myPlayer.Name = "Hero";
        myPlayer.Health = 100;
        myPlayer.AttackPower = 10;

        // 调用Attack方法
        myPlayer.Attack();
    }
}

实际的游戏逻辑可能会更加复杂,包括处理攻击结果、更新健康值、与其他游戏对象的交互等。

  • 游戏场景:

使用导入的3D模型搭建游戏世界的场景。可能包括放置环境、设置灯光和相机等。

  • 优化和调整:

在开发过程中,不断地迭代和测试游戏,比如调整模型和代码等。在开发后期,对游戏进行优化和调整,包括性能优化、用户体验改进等。准备游戏发布,包括构建最终版本、测试不同平台上的表现等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值