1-4 C#编程(零基础)

任务1:第一章课程资料

任务2:简介

任务3:安装设置IDE工具

Unity内置IDE:MonoDevelop

推荐Visual Studio

下载/安装 VS Community 2017 社区版就够用了
Edit->Preference->External Tools->External Script Editor

任务4:创建第一个C#代码

任务5:场景的保存和脚本的保存

脚本的文件名必须和脚本的类名保持一致,因为如果把一个脚本指定给一个GameObject,GameObject使用脚本的时候会根据脚本的文件名到脚本中查找相同名字的类进行加载

任务6:单行注释和多行注释

VS中单行注释快捷键:选中代码;ctrl+k ctrl+c

任务7:日志输出

print(); // 有限制,只能在组件里使用(继承MonoBehaviour类)(现在还没遇到非组件的情况)

Debug.Log(); // 无限制,都可以使用
Debug.LogWarning(); // 警告日志
Debug.LogError(); // 错误日志

日志在console窗口是可以过滤显示的

任务8/9:声明变量

不能以数字开头

注意变量作用域

任务10:小数和整数数据类型

整数:

sbyte = System.Sbyte  -- 8位有符号
short = System.Int16 -- 16位有符号
int = System.Int32 -- 32位有符号
long = System.Int64 -- 64位有符号

byte = System.Byte  -- 8位无符号
ushort = System.UInt16 -- 16位无符号
uint = System.UInt32 -- 32位无符号
ulong = System.UInt64 -- 64位无符号

浮点类型:

float = System.Single -- 32位 (7位精度),注意赋值时的 f/F 后缀
double = System.Double -- 64位(15/16位精度),常量的默认类型
decimal = System.Decimal -- 128位(28位精度)

任务11:其他数据类型

bool/ char/ string

任务12:算数操作符加减乘除

+ 可连接字符串

任务13:比较运算符

任务14:if语句

任务15&16:数组声明和使用

声明方式

int[] hps = {100, 20, 90}; // 长度为3
int[] hps = {};  // 长度为0
int[] hps;  // 数组未创建,不可使用
int[] hps = null;  // 数组未创建,但可以使用,比如print(hps);

int[] hps = new int[10]; // int 默认值为0,string 默认值为nul

int[] hps = new int[5] {34, 2, 324, 3, 34};
// 初始化值个数必须与数组长度5相同,不能少也不能多

任务17&18:for循环 & 用for循环遍历数组

任务19:方法的定义和调用

任务20:枚举类型

在class外部可以进行枚举类型的定义:

enum RoleType {
Mag,
Soldier,
Wizard
}

枚举类型的使用:

RoleType roleType = RoleType.Mag;
roleType = RoleType.Wizard;

任务21&22:方法中参数的作用 & 返回值

任务23&24&25:类的创建、声明和构造 & 字段的使用 & 方法

任务26:结束语

任务27:第二章资料 -- 补充

任务28:创建脚本和附加脚本(补充)

任务29:脚本的基本结构(namespace)

创建namespace命名空间

在Player.cs中

...
using MyGame;
// 只有在Player中引入了该命名空间,GameData才能在Player中使用 public class Player : MonoBehaviour {
void Start() {
GameData data;
}
} namespace MyGame {
class GameData {
...
}
}

MonoBehaviour是在UnityEngine下的一个类

任务30:变量的定义

若有一个public变量,在脚本中初始化值为0,在Unity中Inspector里也会被初始为0
当在脚本中修改代码初始化为10后,Unity中的值不会自动改变,还是0
变量的值优先选择Unity中Inspector面板的值,所以运行的时候变量值依然为0

如果没有给定一个变量public/private修饰符,默认为private

任务31&32:逻辑运算符

任务33:if变形和枚举类型的使用

任务34:switch语句

任务35:for、while和dowhile循环

若要删除一个GameObject的所有子物体:

Transform[] children = transform.GetComponentsInChildren<Transform>();
// 返回的子物体中包含了当前物体
for(int i = ; i < children.Length; i++) {
  if (children[i] != transform) {  // 如果该物体不是当前物体
    GameObject.Destroy(children[i].gameObject);
  }
}

任务36:foreach的遍历

foreach用来遍历集合和数组

任务35中的例子:

foreach(Transform t in children) {
if (t != transform) {
Destroy(t.gameObject);
}
}

任务37&38:组件的获取 & 禁用和激活

组件的获取:

访问自身的组件:
  GetComponent<comp_name>();

transform; // transform组件可以直接获得

Collider[] colliders = GetComponents<Collider>();  // 获得所有的Collider组件

拖拽赋值:

public comp_name xxx;
在unity中拖拽赋值;

获取子物体的组件:

GetComponentsInChildren<xxx>();  // 所有孩子的所有该组件

GetComponentInChildren<xxx>();  // 返回第一个得到的该组件

组件内属性的获取/修改:

Rigidbody rgd = player.GetComponent<Rigidbody>();
rgd.mass = 100;

组件的禁用和激活

被禁用了的组件也是可以被获取的

1. 获取组件

BoxCollider collider = GetComponent<BoxCollider>();

2. 禁用

collider.enabled = false;

注:当一个脚本组件被禁用后,里面的方法依然可以被别的脚本手动调用
  但是那些Unity自动调用的方法就不会被自动调用了,比如Update()/ OnTriggerEnter()

任务39:获取游戏物体的四种方式

1. 拖拽方式 (也是获取组件的方式之一)

2. transform.Find("Child_name") -- 只能用于获取后代物体 -- 推荐使用
  transform.Find("Child_name/Grandchild_name"); // 用/隔开
  如果给的路径不存在的话,会返回Null

3. GameObject.Find("Object_name");  // 查找全局 -- 不推荐使用(耗费性能)

4. GameObject.FindWithTag("Tag_name");  // 查找全局 -- 推荐

Siki_Unity_1-4_C#编程(零基础)的更多相关文章

  1. 《Windows编程零基础学》第零节

    首先很开心申请到了这一个专栏<Windows编程零基础学> 这是第一篇文章,在这里,我将讲述一些基础的知识. 什么是Windows编程 所谓Windows编程就是在Windows平台上开发 ...

  2. 编程零基础应当如何开始学习 Python?

    提前说一下,这篇福利多多,别的不说,直接让你玩回最有手感的怀旧游戏,参数贴图很方便自己可以根据喜好修改哦. 本篇通过以下四块展开,提供大量资源对应. 选一个好版本 有没有看过<在下坂本,有何贵干 ...

  3. 类和对象:面向对象编程 - 零基础入门学习Python037

    类和对象:面向对象编程 让编程改变世界 Change the world by program 经过上节课的热身,相信大家对类和对象已经有了初步的认识,但似乎还是懵懵懂懂:好像面向对象编程很厉害,但不 ...

  4. php编程零基础如何快速入门。门头沟编程

    昨天遇到一个人,说知道thinktphp,不过几年前的事了. 我先跟他讲了下,xyhcms后台功能,各个版块,以及数据库都介绍了一下. 跟他说了一个功能现场实现,说了实现方法. 然后上机操作,发现他表 ...

  5. [置顶] 《Windows编程零基础》__2 一个完整的程序

    Windows开发的常识 1)窗口 Windows中最基本的概念也许就是窗口了,每一个前台程序都至少有一个窗口,一个窗口也是你可以看到的部分,比如,QQ有如下的登录窗口 基本上你在Windows中可见 ...

  6. 零基础如何入门Python

    编程零基础如何学习Python 如果你是零基础,注意是零基础,想入门编程的话,我推荐你学Python.虽然国内基本上是以C语言作为入门教学,但在麻省理工等国外大学都是以Python作为编程入门教学的. ...

  7. [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念

    上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...

  8. [Python] 文科生零基础学编程系列三——数据运算符的基本类别

    上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...

  9. TurnipBit—MicroPython开发板:妥妥拽拽零基础也能玩编程

    可视化编程网站入口:www.turnipbit.com 说到编程.谈到硬件,你也许会想到屌丝逆袭女神的"传奇"故事,也许会浮现出带着眼镜.头发稀少.无精打采的程序猿形象." ...

随机推荐

  1. 十五、详述 IntelliJ IDEA 插件的安装及使用方法

    正文 首先,进入插件安装界面: Mac:IntelliJ IDEA -> Preferences -> Plugins; Windows:File -> Settings -> ...

  2. jFinal 2.2入门学习之二:使用sqlserver数据库学习搭建jfinal-demo框架(MySQL的话就不需要看这个了)

    1.去官网下载最新的jfinal_Demo(我这是JFinal-2.2) 2.解压demo源码,eclipse导入项目 3.本地创建数据库,修改信息,(注意:如果sqlserver端口号冲突,需要配置 ...

  3. STM32的备份寄存器和控制状态寄存器

    STM32的备份寄存器和控制状态寄存器 1 备份寄存器用于RTC时钟 RTC时钟可以在掉电以后继续计数,保证时间的延续,但是重新上电以后需要配置,保证之前的计数不会被清除,可以借助备份寄存器实现,备份 ...

  4. 高考结束了,在门头沟有没有想学php建站的。

    教你简单的html 教你文章后台管理 数据库管理及备份 编程工具的使用 如何找到你要学习的内容

  5. stylus(css预编译器)

    推荐去张鑫旭大神这里详细了解:http://www.zhangxinxu.com/jq/stylus/ 安装 npm install -g stylus 自动编译 $ stylus -w demo.s ...

  6. 一、hadoop 及 hadoop的环境搭建

    一.Hadoop引言 Hadoop是在2006年雅虎从Nutch(给予Java爬虫框架)工程中剥离一套分布式的解决方案.该方案参考了Goggle的GFS(Google File System)和Map ...

  7. 三层架构,Struts2,SpringMVC实现原理图

    三层架构,Struts2,SpringMVC实现原理图 三层架构实现原理 Struts2实现原理 SpringMVC实现原理

  8. 配置一个nginx反向代理&负载均衡服务器

    一.基本信息 系统(L):CentOS 6.9 #下载地址:http://mirrors.sohu.com 反代&负载均衡(N):NGINX 1.14.0 #下载地址:http://nginx ...

  9. PHP 使用GD库合成带二维码的海报步骤以及源码实现

    PHP 使用GD库合成带二维码的海报步骤以及源码实现 在做微信项目开发过程中,经常会遇到图片合成的问题,比如将用户的二维码合成到宣传海报中,那么,遇到这种情况,利用PHP的GD库也是很容易实现的,实现 ...

  10. Mac下PHP的环境搭建

    * 前段时间手欠 ... 入手了一个二手的Macbook pro ! 配置挺高的 16款13寸的基本顶配了 ... 只差 硬盘不是1T的 ... 可以脑补一下配置了* 话说 不是所有程序猿都说 每个程 ...