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. [转]Asp.Net url中文乱码

    一般有3种方法: 1.设置web.config文件 2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码.  传递 string Name = "中文参数"; Resp ...

  2. UIScrollView的常用属性

    UIScrollView的常用属性

  3. XCode: 如何添加自定义代码片段

    转载自:http://rockonmycode.com/tips/xcode-code-snippets#more-185 我们经常会定义一些retain的property,而且大概每次我们都会像这样 ...

  4. RfcDestinationManager.UnregisterDestinationConfiguration时报错cannot unregister the given destination configuration

    在使用NCO访问SAP的RFC时,我的程序代码是这么写的: string destinationName = "EWM_700_GROUP"; IDestinationConfig ...

  5. java 编写小工具 尝试 学习(五)

    1.今天 学习 标签 的 控件 的使用 ,学习 视频教程 参考  :http://edu.51cto.com/lesson/id-17733.html 常用控件如下截图: import javax.s ...

  6. jQuery获取所有父级元素及同级元素及子元素的方法

    jQuery获取所有父级元素及同级元素及子元素的方法 1.获取父级元素 $("#id").parent() 获取其父级元素 $("#id").parents() ...

  7. CF1066EBinary Numbers AND Sum(前缀和,二进制)

    题目大意 现在,给你两个位数为 n 和 m 的两个二进制数a,b,现在,我们要进行如下操作: 计算a&b 答案累加上一个操作的值 bbb右移一位,最后一位直接舍弃 现在,请你算出最终的答案,并 ...

  8. ubuntu18.04错误配置变量环境导致无法进入系统

    1.问题描述 错误配置环境变量(直接在/etc/profile文件末尾添加了export xxx),关机后一直在登录界面循环无法进入系统. ###环境变量的添加是在原有变量之后以冒号(:)分隔加入,并 ...

  9. MySQL数据库 : 基本语句

    mysql -uroot -p 登陆数据库 select now(); 显示当前时间 \q 退出 show databases; 显示数据库 create database 数据库名 charset= ...

  10. Python基础知识--Slice(切片)和Comprehensions(生成式)

    最近在Youtube的Python视频教程上学习Python相关的基础知识,视频由Corey Schafer制作,讲得十分简单明了,英文发音也比较清晰,几乎都能听懂,是一个不错的Python入门学习的 ...