700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 游戏研发基础知识库(入门教程)

游戏研发基础知识库(入门教程)

时间:2024-01-25 08:39:18

相关推荐

游戏研发基础知识库(入门教程)

目录

入门语言(C#)C# 基础概念讲解:

1.class与struct

内存模型

class

struct

继承

重载

2.系统属性(int string Enum):

get与set

3.变量:

基本数据类型

string

数组

4.方法:

多态

构造函数

虚函数

5.内存列表:

6.逻辑判断语句:(if else/switch )

7.常用系统操作符:|| && == != <= >​

8.switch 和状态机

9.for/foreach

10.其它常用

static

const readonly

泛型编程

命名空间

其它

11.mathf 数学函数简要示例

练习实例:

编码命名建议:

入门语言(C#)C# 基础概念讲解:

(主要介绍游戏开发中常用的一些概念或基基础知识,本篇文章会慢慢完善和加入一些例子,让大家更好的理解游戏开发需要掌握哪些知识就可以,不理解的可以提出来)

1.class与struct

1.最小编程个体,方法必须写在类中,万事万物皆可定义

2:class实例的赋值,赋的是引用地址,struct实例的赋值,赋的是值(内存的拷贝)

3:class作为参数类型传递,传递的是引用地址,struct作为参数类型传递,传递的是值,除非你使用ref;

4: new 操作符,class是在堆上分内存配,而结构体是用变量的内存,结构体定义在哪里,内存就分配在哪里;

内存模型

1: 代码段,数据段, 堆,栈

2: 函数指令/常量字符串存放在代码段上 全局变量 存放在数据段上

3:堆: 复杂对象实例通过new 分配在堆上;

4: 局部变量存放在栈上,随着函数返回,变量内存回收;

class

1:定义一个类: 权限 class 类的名称;

2:类的数据成员 权限 类型 名称;

3: 类的成员函数 权限 返回类型 函数名称(参数1, 参数) 没有任何返回值为void

4: 类的实例化与类的引用

struct

1:传值和引用; 基本数据类型为传值,复杂的类传引用;

2: 不是基本数据类型,又希望方便的传值 --- struct

3: 结构体有数据成员,成员函数;

4: 不能重载默认的构造函数,默认构造函数把所有的初始化为0;

5: 可以重载不同参数的构造函数;

6: 结构体的变量定义在哪里,那么内存就分配在哪里;

7: 结构体的new 不额外的创建内存,使用=左边的内存;

8: 结构体赋值和传参,内存都拷贝一份;

9: 结构体参数传引用 ref修饰;

继承

1: 冒号: 基类名字

2: 子类 -- 父类

3: 派生类--基类

4: 子类调用基类数据成员; public, protected权限才可以

5: 子类调用基类的成员函数; public, protected权限才可以

重载

1:子类重新实现了基类有的方法--->重载

2:子类调用基类的同样名字的方法,调用的是子类自己的

3: base.基类的方法名字

2.系统属性(int string Enum):

基础属性,系统预定义的类型

get与set

1: 成员变量,如果只读不能写怎么办? public一公开,可读可写;

2: 给这个成员定义一个属性, 属性 读/写访问器

3: value 指的是别人在外部设置的值,在set里面使用value替代;

4: get, set也可以有权限修饰符号;

public int signNum{get{return PlayerPrefs.GetInt(PlayerPrefsItem.SignNumPrefs.ToString(),0);}set{PlayerPrefs.SetInt(PlayerPrefsItem.SignNumPrefs.ToString(), value);}}

3.变量:

自定义的临时或全局属性,标记用,值可在内存中随意改变或独取

定义一个变量: 基本变量和引用变量 只在函数类有效

基本数据类型

1:字节与bit

2:权限 数据类型 变量名称;

3: 基本数据类型:

(1)整形 sbyte/byte short/ushort int/uint long/ulong

(2)浮点数: float (32bit), double (64)

(3) bool 逻辑类型: true, false

(4) char类型 16位unicode

(5) 复杂类型的引用变量,属于基本变量存放复制对象引用。64位的.net为 64bit, 32位.net为32位

string

(1):string.Format 格式化生成字符串

(2): string对象判断字符串是否相同 Equals

(3):变大写 ToUpper, ToLower

数组

1: 存放同样类型的一组数据

2: 可以使用名字[索引]访问, 索引从0开始;

3: new int[10];

4: 数组的访问与遍历

4.方法:

实现某一功能的思路或具体逻辑

指令语句都在函数里面执行;

成员函数的调用: 对象的实例.函数名称(参数);

return 语句 返回值或对象的引用给调用者;

多态

1: 一个函数的多种形态,函数名相同参数不一样;

2:实际上是两个函数,不纠结;

构造函数

(1): 函数名称和类的名字一样的函数;

(2): 构造函数可以有多个参数不一样的形态;

(3): 继承自MonoBehaviour的对象不要去 重载它的构造函数;

(4): new 构造函数(参数, 参数);

虚函数

1: 虚方法前不允许有static,abstract,或override修饰符

2: 虚方法不能是私有的,因此不能使用private修饰符

3: override 基类重写这个方法

4: 基类引用保存子类实例;

5.内存列表:

实现对属性的批量操作(array/List/dictionary/stack)Add /Remove)

6.逻辑判断语句:(if else/switch )

1:if()

2: if () {} else {}

3: if () {}else if {} else {}

7.常用系统操作符:|| && == != <= >

(1): 赋值表达式; (2): + - * /表达式 ++, -- , 取余%; (3):比较表达式 <, <=, >, >=, ==; (4): 逻辑表达式 &&, ||; (5):类型强转

8.switch 和状态机

switch(变量) {

case 常量1: break;

....

default: break; }

9.for/foreach

1.for(初始条件; 循环判断; 循环迭代) {}

从哪开始循环

循环进入的条件

下个循环最终要执行的索引

2:while() {}

3: do {} while();

4: continue; 跳过单次

5: break; 跳出循环

10.其它常用

static

1: static 类的静态方法;

2: static 类的静态变量;

const readonly

1:const 修饰的类的成员变量,在编译的时候确定的常量,运行的不可更改

2:readonly 实例化时确定的常量,可以在构造函数里面修改,后面就再也无法修改了;

泛型编程

1: 泛型类 2: 泛型成员方法

命名空间

1: namespace my_name {}

2: using namespace my_name;

其它

随机数的方法使用

类的多态性

文件的输入输出

异常处理

11.mathf 数学函数简要示例

Mathf.Sqrt(开平方):

简单的说,就是比较某两个东西,我们首先要确定一个参照系。

所以我们一般认为比较两个量,必须要在相同单位的情况下比较,这往往是符合客观世界的,比如面积和长度的比较是没有实际意义的。

比如100平方米的房子和15米的长度如何比较?

如果用100平方米开方,得到10米,就可以和15米的长度进行比较了。

但是你肯定会问这有什么道理呢?

确实,这只是为了解决问题所设定的一种路径,一种方式,一种工具。其本身并没有什么道理可言,只是在某种前提下合理即可。

或者简单的理解为,这是人为规定的。

Math.atan2(反正切计算得到弧度):

Math.atan2()接受两个参数x和y,方法如下:

angel=Math.atan2(y,x)

x 指定点的 x 坐标的数字。

y 指定点的 y 坐标的数字。

计算出来的结果angel是一个弧度值,也可以表示相对直角三角形对角的角,其中 x 是临边边长,而 y 是对边边长。

a=angel*180/Math.PI//将弧度转换为角度

练习实例:

1.随机生成姓名(百家姓或起名软件)

2.打飞机游戏

生成大量随机的怪物

碰撞检测(非物理)

UGUI:

背景的循环移动(限2张图)

编码命名建议:

它不该着眼现在,还能面向未来

共同的任务一定要抽象出来,善用艺术和修辞手法

要学会表达意图,而非陈述事实

避免使用繁琐的组合词,简短而有力,诗意而优美

1: 微软使用的匈牙利命名法; 2: java使用的驼峰命令法; 3: linux 使用的命名法; 4: 无所谓,项目规定有哪个就用哪个

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。