Unity基础学习之Unity引擎学习

Posted qingtian_111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity基础学习之Unity引擎学习相关的知识,希望对你有一定的参考价值。

Unity引擎基础

1. Unity简介

  • 简单介绍:
  • Unity提供Manual(引擎说明书)和Scripting API(代码,类和方法可以在这里查)两个文档,开发人员可以阅读这两个文档来了解Unity开发

2. 游戏组成

  • 一个游戏由多个场景构成,场景又分为2D界面和3D场景
  • 在Unity中,界面和场景都称为场景,场景和场景之间可以相互切换
  • 场景中包含很多个游戏对象,游戏对象有:
    • 2D图片与文字
    • 3D模型(包含动画)与特效
  • 游戏对象具有的特性:
    • 所有游戏对象都是一样的(游戏对象就是一个外壳
    • 游戏对象上挂载的组件不同,挂载的组件属性不同,导致游戏对象的功能不同(功能由组件完成
  • 游戏对象包含各种组件,下面罗列几种组件:
    • 灯光组件(发光)
    • 声音组件(背景音乐)
    • 视频组件
    • 图片组件(显示图片)
    • 模型显示组件(渲染组件)
    • 特效组件
    • 导航组件
    • 物理组件
    • UI组件
    • 脚本组件(自己写的功能)
  • 组件就是一个对象,对象中包含各种属性
    • 组件名——类名
    • 一个类包含成员字段、成员属性、成员方法
  • 一个游戏总共分成四个部分,总结如下:
    • 一个游戏由多个场景组成,场景有2D场景和3D场景之分
    • 一个场景由对个游戏对象组成
    • 一个游戏对象由多个组件组成
    • 一个组件由多个属性组成

3. Unity面板介绍

  • Layout:窗口布局样式
  • 带Unity图标的表示场景

3.1 Hierarchy(层级面板)

  • 功能:
    • 显示当前场景中的所有游戏对象的名字
    • 描述游戏对象与游戏对象之间的层级关系(父子级关系)
  • 可以拖动游戏对象以形成层级

3.2 Scene(场景面板)

  • 功能:
    • 显示当前场景中的所有游戏对象的模型/图标
    • 提供场景和游戏对象的基本操作
  • 在面板右上角存在坐标系,可以调整场景视角
  • 场景操作:
    • Q键:场景移动
    • Alt+鼠标左键:旋转场景视角,围绕场景中心点旋转视角
    • 鼠标右键:旋转场景视角,围绕当前观察者(鼠标位置)旋转视角
    • 鼠标滚轮:拉近拉远场景
    • F键:聚焦对象
    • 鼠标右键+WASD:场景漫游
    • Shift+Ctrl+F:游戏界面同步场景界面(用在摄像机上)
      • 在场景中选择好合适的视角
      • 选中摄像机对象
      • 同步视角,按下快捷键或者GameObject菜单栏下的Align With View
  • 游戏对象操作:
    • W键:对象移动
    • E键:对象旋转
    • R键:对象缩放
  • 摄像机具有两个模式:透视模式(Perspective)和正交模式(Orthographic,一般2D会用到)
  • 搭建场景的时候,为了模型放置精准,可以按下面的顺序进行操作模型:
    • 模型先通过QWER设置好一个大概的位置旋转缩放
    • 通过模型在Inspector上的Transform组件里的position、rotation、scale去做微调,最好保持数值是一个整数或保留一位到两位小数
  • 放置模型,还可以采用位置贴边方式:
    • 调节物体位置时,可以按住V键,让当前模型的某个顶点与另一个模型的某个顶点重合,实现贴边
    • 原理:
      • 一个物体存在多个顶点,每三个顶点可构成一个三角形,多个三角形形成一个模型
      • V键可以让坐标系移动到模型顶点位置
      • 两个模型之间顶点和顶点重合,可以产生贴边效果
  • 当要创建一个复杂物体时,可以按照下面的步骤来创建:
    • 先创建一个空对象,作为父物体,创建好后,先Reset重置空对象Transform组件中的属性
    • 再去创建物体需要的源部件,作为子物体

3.3 Game(游戏面板)

  • 功能:
    • 显示玩家所看到的画面
    • 开发中需要重点关注的视角
    • 调试和测试都需要看这个面板上的信息
  • 通过调整摄像机来调整完整能看到的视角
  • 手机游戏/电脑游戏中,玩家所能看到的画面会显示在屏幕(2D)上
  • VR(眼镜曲面屏)/AR中,主要是通过光学原理,让玩家产生视角错觉,在屏幕上所能看到的2D画面转变成3D画面
  • 在这个面板上,存在一个尺寸调整条,可以放大缩小所看到的画面
  • 游戏运行的状态信息(运行时占CPU大小,占多少内存,当前帧速率是多少等)可以在面板的右上角Stats中查看,用于后期的游戏调试

3.4 Inspector(监视器面板)

  • 功能:
    • 主要用来监视游戏对象
      • 重点监视游戏对象上挂载的组件,可以在这个面板添加新组件
      • 监视游戏对象的基本信息(对象名字、是否静态、有哪些标签、属于哪一层级、激活状态)
    • 监视文件信息(材质文件等)
    • 监视工程设置

3.5 Project(工程面板)

  • 功能:
    • 显示当前工程的所有资源文件
    • 根目录是Assets
  • 一个工程下有5个基础文件夹:
    • Assets:放置资源文件
    • Library:放置库文件(自动生成)
    • ProjectSettings:放置工程设置文件
    • Temp:放置临时文件
    • Package(UnityPackageManager):Unity包管理器

3.6 Console(控制台面板)

  • 功能:(显示控制台信息)
    • 显示日志信息
    • 显示警告信息
    • 显示报错信息

4. 地形系统(Terrain)

  • Unity提供的一个地形组件
  • 一个游戏场景空间,采用地形+模型的方式搭建
  • 创建地形系统:
    • GameObject——>3DObject——>Terrain
    • 创建完成后,在Hierarchy面板中出现相应游戏对象,Project面板中出现地形系统文件(存储地形信息)
    • 初始坐标中心位于左下角(x轴表左右,y轴表上下,z轴表前后)
  • 编辑地形
    • 抬高/降低地形平面(可选择不同笔刷形成不同地形样式)
      • Brush Size:笔刷大小
      • Opacity:笔刷硬度,值大小表示抬高/降低地形速度
    • 平滑地形
    • 凹陷地形(可制作平台)
      • 在Unity2020版本中,选择设置高度后,Space处要选择Local才可以在一定高度地形上设置平台
    • 整体设置中可以调整地形大小、高度等
      • 高度限制抬高地形最高点
    • 按住shift键,做相反操作
    • 搭建地形时,要注意,第一个物体的坐标尤为关键,关系到地形上放置模型的坐标值计算是否方便
      • 能放在原点,尽量放在原点位置
      • 不能放在原点,尽量保持坐标是一个整数,或保留一位小数

5. 一些3D模型中会用到的基础理论

5.1 物体中心的概念

  • Pivot(模型设计师设计的)
    • 单个物体:显示物体出产中心
    • 多个物体:显示当前这个物体的中心
  • Center(对象边界框的中心点)
    • Unity物理计算中心
  • 通过快捷键Z切换两个中心点
  • 物体中心点的选择不同会影响到旋转效果不同

5.2 坐标系(笛卡尔坐标系)的概念

  • 2D笛卡尔(XY轴可以定一个平面上物体位置)
  • 3D笛卡尔
    • 左手坐标系——计算机、Unity中使用
      • 掌心向外, 大拇指与食指成90度
      • X轴向右,Y轴向上,Z轴向前
    • 右手坐标系——一般在数学中使用
      • 掌心向内, 大拇指与食指成90度
      • Z轴与左手坐标系相反,指向“自己”
  • Unity坐标系
    • 世界坐标方位
      • 世界的东南西北
      • 永远不会改变
    • 本地坐标方位
      • 物体的前后左右
      • 会随时发生改变,例如,旋转物体时,物体的本地坐标也会跟着旋转
    • 用快捷键X切换两个坐标,即切换方位(世界方位/自身方位)

5.3 向量和标量的概念

  • 标量:有大小无方向
  • 向量:有大小有方向(Unity中常用)
    • 计算两点之间形成的向量:终点坐标-起点坐标
    • 向量加法:首尾相连,一个向量起点指向另一个向量终点
    • 向量减法:起点相连,减数终点指向被减数终点(被减数-减数=差)
    • 向量点积:
      • 结果是一个标量

      • 根据点乘结果来判断两个游戏对象之间的方位关系
      • 通常用于判断敌人在前还是在后
    • 向量叉乘 :(利用UnityAPI中的Cross函数即可得到计算结果)
      • 结果是一个向量(法向量,垂直于两个向量平面),左手坐标系计算
      • 法向量指向上方,表示b向量指向a向量右边;指向下方,则相反
      • 通常用于判断敌人在左还是在右

5.4 旋转的概念

  • 欧拉角(EularAngle):——结构体
    • 物体绕XYZ轴(世界的)旋转的角度
    • 优点:好理解,好操作
    • 缺点:容易出现多个欧拉角的值表示一个旋转
  • 四元数:(用得较多,较精准)——类
    • 由XYZW四个值组成,由一堆算法算出来
    • 优点:避免万向锁(同一个旋转角度,欧拉角描述会有不同的值出现)问题
    • 缺点:不好理解,不好操作

5.5 网格的概念(模型形状)

  • 用一堆三角形组成
  • 模型分为粗模(低模)和细模(高模)两种
  • 模型纹理:网格贴图(将2D贴图上的像素点对应到3D模型中粘贴)
  • 会用到组件有Mesh Filter(网格选择器)和Mesh Renderer(网格渲染器)

5.6 材质的概念

  • 用于渲染网格的文件
  • Shader(着色器)来编程实现(渲染方案)
    • 控制材质球如何渲染的脚本
    • 使用CG语言
    • 可以编辑特效等
    • 需要物理中的光学知识和线性代数中的矩阵知识
  • 帧速率(FPS)的概念
    • 每秒刷新多少次数
    • 作用:
      • FPS越高,播放越流畅,性能消耗越大
      • FPS越低,播放越不流畅,性能消耗越小
      • 人眼分别的帧数是每秒24帧
    • 通过Game面板中的Stats来了解游戏的帧速率

Unity基础学习之C#学习

C#基础语法部分

1. 开发环境搭建

1.1 Visual Studio

1.2 Unity

1.3 MSDN

2. 进制

在进制中,比较重要的两个是二进制和十进制,二进制是机器理解的数据,十进制是人常用理解的数据。

2.1 进制概念

  • 进制概念:人为定义带进位计数方法
  • 二进制:逢二进一,0和1
  • 十进制:逢十进一,0~9
  • 八进制:逢八进一,0~7
  • 十六进制:逢十六进一,0-9和A-F
  • 计算机为什么能理解二进制:数据以电信号传输(高电频和低电频)
  • 计算机如何理解数字和文字:数字转换成二进制,文字用编码转换再转换成二进制

2.2 进制转换

  1. 二进制转十进制

    1字节=8比特,因此二进制写法以八位起步,即1字节可以存储255(1111 1111)大小的数
  2. 八进制转十进制
  3. 十六进制转十进制

    A8B6 = 6 ∗ 1 6 0 + 11 ∗ 1 6 1 + 8 ∗ 1 6 2 + 10 ∗ 1 6 3 6*16^0+11*16^1+8*16^2+10*16^3 6160+11161+8162+10163
  4. X进制转十进制
  5. 十进制转二进制
  6. 八进制转二进制
  7. 十六进制转二进制

3. 原码、反码、补码

  • 原码、反码和补码都是针对二进制计算的。
  • 1字节中的8位并不一定都是用来存储数据的,还会用来存储符号,比如正负数

3.1 正负数三码的计算方式


  • 在有符号数据中,0的二进制表示有两个,即+0(0 000 0000)和-0(1 000 0000)。
  • -0转换成补码后会变成0000 0000,这是因为在反码+1后,补码长度变成了9位,而存储空间只有8位,舍去了最高位。

3.2 使用三码的原因

  • 计算机底层只能做加法运算,减法运算是通过将第二个数转换成负数后再进行加法运算来实现的
  • 使用三码主要是为了精确计算机底层进行加法运算后得出的结果
  • 用原码来进行含有负数的加法运算,会导致得出的结果偏差很大

4. C#开发语言介绍

  • 计算机只能读取二进制,因此创造除了编程语言,用编程语言实现程序后,将代码编译成二进制,方便计算机读取
    • C#开发语言特点:面向对象,简单
    • 继承C和C++强大功能,去除C和C++的复杂特性(C面向过程,指针复杂;C++中有很多手动操作,例如手动操作内存等)
  • 使用任何一门编程语言,都需要基于框架
    • C#语言使用.NET Framework和.NET Core开源框架
  • 写代码要注意代码阅读性维护性

4.1 用VS创建一个项目

  • 创建项目过程如下:
  • 如何在解决方案中新建项目:
    • 一个解决方案中可创建多个项目,但只可以运行一个项目
    • 可运行的项目会被标粗
    • 切换运行项目:设置需要运行的项目为启动项目
    • 设置启动项目操作:右键项目–>设置为启动项目
  • 如何在项目中创建.cs文件:
    • 右键项目–>添加–>新文件–>找类文件

4.2 第一个C#文件

  • 写C#程序:
using System;     //引用了一个命名空间(又叫库)
namespace aCSharpBase   //声明命名空间

     class MainClass    //声明一个类
     
            //Main函数是程序的入口
            public static void Main(string[] args)
            
                  //在控制台上打印一句话
                  Console.WriteLine("Hello World!"); 
            
     

  • 编译当前程序:
    • C#程序程序员可以看懂,但机器不能看懂;然而执行程序的是机器
    • 将C#程序编译(翻译)成机器可以看懂的语言,即二进制后,程序可以被执行
  • 运行当前程序 :
    • 获取执行结果

4.3 注释

  • 注释不会被编译,也不会被执行
  • 注释作用:
    • 解释说明当前代码含义(在开发程序时,每段代码都要写注释)
    • 暂时取消某些代码的执行
    • 多行注释放于文件前部,说明文件创建人以及修改人等信息,起到软件开发认责作用
  • Windows下VS的注释快捷键:
    • 注释:Ctrl+K+C
    • 取消注释:Ctrl+K+U
  • 对于区域性划分注释,可以使用标签region
    • 快捷键:输入#re后,按两下tab键

5. 数据类型

  • 机器含有的东西:CPU、内存条、硬盘、显存/显卡…
  • 程序执行前,先将已知的数据存储到机器中(硬盘、内存、CPU缓存)
  • 数据类型:存储不同类型数据的容器
  • 开辟数据存储内存(根据设置的数据类型),用完数据后,返还内存
  • 值类型和引用类型的区别在于:
    • 进行数据存储时,值类型变量直接保存变量的值
    • 引用类型的变量保存的是数据的引用类型,引用类型的变量也叫对象
    • 进行数据操作时,对于值类型,由于每个变量有自己的值,因此对一个变量的操作不会影响其他变量
    • 对于引用类型的变量,对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作,因此对一个变量的操作就会影响到引用同一个对象的另一个变量
  • 判断数据类型是值类型还是引用类型方法:
    • 用两个变量进行数据操作,一个变量进行赋初值,另一个变量赋前一个变量
    • 改变其中一个变量值,查看另一个变量值是否被影响而产生变化
    • 另一个变量不变化,说明数据类型是值类型
    • 另一个变量值和改变的变量值仍然保持一致,说明数据类型是引用类型
  • 数据的量级:
    • 1024字节(byte) = 1KB
    • 1024KB = 1MB
    • 1024MB = 1GB
    • 1024GB = 1TB
    • 1024TB = 1PB

5.1 值类型

  • 值类型源于System.ValueType家族
  • 每个值类型的对象都有一个独立的内存区域用于保存自己的值
  • 值类型数据所在的内存区域称为
  • 值类型主要包括整型、浮点型、字符型、布尔型、枚举型等
  • 对值类型,不同的变量会分配不同的存储空间,并且存储空间中存储的是该变量的值

5.1.1 基本数据类型

  • 下面两张表罗列了13个基础数据类型:

  • 不同数据类型可以存储的数据大小不一样,在选择数据类型时,要注意其取值范围,选择最适宜的数据类型
  • short是Int16结构的别称,int是Int32结构的别称,long是Int64结构的别称



5.1.2 枚举类型(自定义数据类型)

  • 枚举类型的定义:
  • 不可在方法内定义枚举类型
  • 枚举类型的使用:
    • 自定义一个枚举类,相当于自己创建一个数据类型
    • 与声明基本数据类型的变量一样,声明枚举类型变量
    • 可以为枚举类型变量自定义中的枚举值
  • 使用枚举类型,可以加强代码的可读性以及维护性
    • 想要列举的值,都可以直接添加到定义好的枚举类型中
    • 在Unity中使用枚举类型,可以产生下拉菜单
  • 枚举类型可以强制转换成整型;0可以隐式转换成枚举类型,其余整型要强制转换成枚举类型
  • 可以对枚举类型变量进行加减运算

5.1.3 结构类型(自定义数据类型)

  • 结构体类型的定义如下:
  • 不可在方法内定义结构体类型
  • 结构体类型的使用:
  • 对于给结构体中变量进行初始化,可以使用构造函数实现:
    • 在结构体的构造函数中,空构造函数是冗余的,要自定义构造函数,函数必须含参
    • 构造函数创建好后,在给结构体变量开辟内存空间时,就可以利用构造函数进行变量初始化
      • eg:Student xiaoming = new Student(“”,“”,…);

5.2 引用类型

  • 引用类型源于System.Object家族
  • 引用类型数据所在的内存区域称为
  • 在C#中引用类型主要包括数组、类、接口、委托、字符串等
  • 对引用类型,赋值是把原对象的引用传递给另一个引用
  • 对数组而言,当数组引用赋值给另一个数组引用后,这两个引用指向同一个数组,也就是指向同一块存储空间

5.3 指针类型(仅用于非安全代码)

  • 指针类型变量存储另一种类型的内存地址
  • 声明指针类型的语法如下:
    • type *   identifier;
    • eg:char*  cptr;

6. 常量和变量

  • 对于浮点型数据,无论常量还是变量都要注意,数字是小数时:
    • float类型的数据后面要加f
      • eg:float money = 100.35f;
    • double类型的数据后面要加d,可以不加(因为一般小数默认为double类型)
      • eg:double damage = 1.223d;
    • decimal类型的数据后面要加m
      • eg:decimal number = 1.3m;
  • 浮点型数字是整数,数字后可以不加后缀
    • eg:float score = 90;
  • 对于字符类型,赋值,一定要用单引号括起来
    • eg:char sex = ‘M’;

6.1 常量

  • 什么是常量:
  • 常量声明:
    • const 数据类型 变量名 = 初值;
    • 必须要赋初值,后面不可再修改

6.2 变量

  • 什么是变量:
  • 变量定义(声明):
    • 变量可以不赋初值,但在特殊情况下必须要赋初值
      • 不赋初值,则当前变量的值是默认值
      • int/float默认值是0
      • char默认值是’\\0’(表示空字符)
  • 有两个变量相加,先对分配好的变量内存空间进行命名(声明变量),根据变量名来获取存储的数据,最后进行变量运算

6.3 常量与变量之间的区别

  • 程序运行期间表示的是:
    • 程序开始到程序结束
  • 常量和变量之间的区别:
    • 在程序运行期间,能否被改变
    • 常量只有在写定义的时候,可以改变值,后续不可再被赋值
    • 变量在定义时可以给初值,后续仍然可以被赋值

6.4 常量及变量命名规则和规范

  • 命名规则如下图所示前三条:(其中,要注意的是,中文变量名语法上是可行的,但不推荐使用)
  • 命名规范
    • 命名用英文单词,不要使用拼音
    • 驼峰命名法
      • 大驼峰:每个单词首字母大写,其余字母小写
        • eg:MyHeroDamage,HeroAttack
        • 方法名、类名、接口名要使用大驼峰
      • 小驼峰:第一个单词首字母不大写,后面每个单词首字母大写,其余字母小写
        • eg:myHeroDamage,heroAttack
        • 变量用小驼峰
    • 见名知意:看到变量名,能够知道它是用来存储什么东西的

7. 运算符、表达式及语句

7.1 运算符

  • 数据存储完成后,要对数据进行处理,这就要用到运算符了




  • 注意:
    • 赋值运算符是一个等号,表示的是一个运算
    • 算术运算符中,+、-、*、/、%是二元运算符;++、- -是一元运算符
    • 自增、自减符号位置不同,会产生不同结果
      • age++:整体结果保持原值,age变量结果增1;先赋值后自增
      • ++age:整体结果增1,age变量结果增1;先自增后赋值
    • 逻辑运算是两个bool型数据之间的运算
      • &(与运算):一假则假
      • |(或运算):一真则真
      • !(非运算):相反
      • &运算和&&短路与运算之间的区别:
        • &运算——无论第一个条件是真是假,都会继续判断第二个条件
        • &&短路与运算——若判断第一个条件已经是假,则不会继续判断第二个条件
      • |运算和||短路与运算之间的区别:
        • |运算——无论第一个条件是真是假,都会继续判断第二个条件
        • ||短路与运算——若判断第一个条件已经是真,则不会继续判断第二个条件
      • 短路&&和短路||:
        • 优点:
          • 第一个条件已经得知整个逻辑运算的结果后(&&的第一个条件为假/||的第一个条件为真),不会去判断第二个条件
          • 节约运算量
        • 缺点:
          • 当判断中带有运算时,若不进行第二个条件判断,则第二个条件中的运算不会被执行
    • 条件运算符是一个三目运算符
  • 在进行两个数值运算过程中,若想要保留小数位数,有两种方法:
    • ToString(“0.根据要保留的小数位数写0”),这种方法最后得到的是字符串结果
      • eg:保留两位——ToString(“0.00”)
    • Math.Round(数字,保留几位),这是一种数学计算公式
      • eg:保留两位——Math.Round(数字,2)

7.2 表达式

  • 表达式可以不以分号为结尾,其组成部分是常变量与运算符

7.3 语句

  • 一个分号隔开一个语句

8. 输入与输出

  • 用户与程序之间的交互,主要通过输入实现
  • 用户输入数据,经过程序对数据的处理后,返回一个输出给用户
  • 输入需要用到设备,一般的输入设备是鼠标键盘,当然还有手柄、触屏(虚拟摇杆)等输入设备
  • 下面介绍C#中的输出函数与输入函数:

9. 数据类型转换

  • 数据类型之间的转换,根据不同情况,分为隐式转换和强制转换
  • 当小容器中的数据要存储到大容器中,则系统自动采用隐式转换
  • 当大容器中的数据要存储到小容器中,则在程序编写时要加修饰(强制转换修饰符)来达成强制转换

9.1 隐式转换

  • 数据类型之间由小到大排序
    • b o o l < c h a r < i n t < f l o a t < s t r i n g bool<char<int<float<string bool<char<int<float<string
    • 所有整型之间的排序: s b y t e ( 1 字 节 ) < s h o r t ( 2 字 节 ) < i n t ( 4 字 节 ) < l o n g ( 8 字 节 ) sbyte(1字节)<short(2字节)<int(4字节)<long(8字节) sbyte(1)<short(2)<int(4)<long(8)
  • 隐式转换发生在将占用字节小的、取值范围小的、精度小的,转换成占用字节大的、取值范围大的、精度高的
    • 系统自动转换
    • 不需要其它修饰
    • 赋值运算符左侧为占用字节大的、取值范围大的、精度高的,右侧为占用字节小的、取值范围小的、精度低的
    • eg:float score = 32; ——>int型转换成float型
  • 字符型数据会自动根据编码表,转换成整型数据
    • eg:输入字符’a’,得到结果97

9.2 强制(显式)转换

  • 强制转换发生在将占用字节大的、取值范围大的、精度高的,转换成占用字节小的、取值范围小的、精度小的
    • 需要强制转换修饰符
    • 会有精度缺失,甚至会出现数据错误(这是因为数据在计算机底层是以二进制形式存储,存储空间变小会舍去超出存储空间部分的高位数据,最终导致数据错误)
    • 一般在两个不同类型的数值之间使用强制转换时要注意,需要转换的数值是处于小的数据类型取值范围内
    • 浮点型数据强制转换成整型数据,会导致小数点后面的内容被舍去
  • 数值转换成其他数据类型
    • 对于字符,在存储时,一般会先将字符用编码表转换成数值后,以二进制数据进行存储
    • int型数据转换成char型数据——根据编码表得到字符
      • eg:int data = 97;
                char change = (char) data;
    • int型数据无法转换成bool型数据
  • 字符串(string)与其他类型之间的转换
    • 其他类型转换成字符串:
      • 其他类型数据加上双引号后,就变成了字符串数据类型
        • eg:“false”,“10”,“3.14”,“A”
      • 其他类型的变量.ToString()
        • eg:int data = 97;
                  string str_data = data.ToString();
    • 字符串转换成其他类型:
      • 转换方法:
        • 使用System.Convert类下相对应的方法,即:
          • System.Convert.ToBoolean()
          • System.Convert.ToInt32()
          • System.Convert.ToSingle()
          • System.Convert.ToDouble()
          • System.Convert.ToChar()
          • System.Convert.ToBoolean()
        • 使用数据类型.Parse()方法,即:
          • bool.Parse()
          • int.Parse()
          • float.Parse()
          • double.Parse()
          • char.Parse()
      • 字符串转换成bool型
        • eg:string str = “false”;
                  bool bl = Convert.ToBoolean(str);
        • eg:bool bl2 = bool.Parse(str);
      • 字符串转换成int型
        • eg:string str = “312”;
                  int it = Convert.ToInt32(str);
        • eg:int it2 = int.Parse(str);
      • 字符串转换成float型
        • eg:string str = “3.1415”;
                  float fl = Convert.ToSingle(str);
        • eg:float fl2 = float.Parse(str);
      • 字符串转换成double型
        • eg:string str = “3.1456415”;
                  double dl = Convert.ToDouble(str);
        • eg:double dl2 = double.Parse(str);

10. 访问修饰符

  • 什么是访问修饰符(用于限制程序员):
  • 代码位置层级划分:
  • 常用修饰符:

11. 总结

  • 数据类型:选择存储容器,不同类型可以存储的数据大小不一样
  • 常量与变量:数据存储区域命名后,可根据名称来获取存储的数据
  • 运算符:数据处理需要用到的符号
  • 表达式:相当于一个计算公式,由常变量和运算符组成
  • 语句:一个程序由多条语句构成,是计算机执行的最小单位;一个表达式加一个分号就可以形成一条语句
  • 输入与输出:主要针对的是用户与机器的交互
  • 数据类型转换:在处理数据过程中,会遇到数据类型不匹配情况,通过转换,可以使得等式两侧数据类型一致
  • 在写代码的时候,一个方法内容有很多,为了能更好的阅读代码,可以用标签#region [段名]...#endregion来划分代码区域
  • 设定访问修饰符,可以提高代码的安全性,写一段代码,一定要设置好其访问修饰符

以上是关于Unity基础学习之Unity引擎学习的主要内容,如果未能解决你的问题,请参考以下文章

Unity强化学习之ML-Agents的使用

学习unity3D需要多久

渲染基础概念 unity shader 材质相关学习

Unity shader学习之阴影,衰减统一处理

学unity3D游戏开发需要什么基础

Unity学习之Shader