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. Word中高效输入公式:内嵌公式和Mathtype

    Word中高效输入公式:内嵌公式和Mathtype 前言:对于理工科学生而言,公式输入必不可缺.LaTeX相比Word,在公式输入及排版方面更强大.但是对于轻量级的任务,用Word而言更加轻便(起码不 ...

  2. EF Core 2.1 中的 Eager loading、Explicit loading和LazyLoading (转自MSDN)

    Entity Framework Core allows you to use the navigation properties in your model to load related enti ...

  3. Lua库-bit32库

    Global = Global or {}; local bits = {}; function bits.bxor(num1,num2) local ret=bit32.bxor(num1,num2 ...

  4. Swift_属性

    Swift_属性 点击查看源码 class DataImporter { var fileName = "data.txt" init() { print("初始化&qu ...

  5. centos7中nginx的搭建

    ./nginx 启动服务./nginx -s stop 关闭服务./nginx -s reload 重新加载配置文件 首先我们应当安装一个依赖的软件包: yum install gcc-c++yum ...

  6. angular2路由之routerLinkActive指令

    angular2的routerLinkActive指令在路由激活时添加样式class .red{  color: red;}    <a routerLink="/user/login ...

  7. Hadoop原理之——HDFS原理

    Hadoop 3个核心组件: 分布式文件系统:Hdfs——实现将文件分布式存储在很多的服务器上(hdfs是一个基于Linux本地文件系统上的文件系统) 分布式运算编程框架:Mapreduce——实现在 ...

  8. Vue.js的小例子--随便写的

    1.领导安排明天给同事们科普下vue 2.简单写了两个小例子 3.话不多说直接上代码 <!DOCTYPE html> <html> <head> <meta ...

  9. Django之图书管理系统

    出版社的增删改查 展示出版社列表: 1. 创建一个表结构:   2. 再配合那俩条命令即可创建一个press表 创建出版社函数,并在url中进行配置 创建HTML页面,展示出版社的表 for循环 {% ...

  10. C语言实验报告(四)完全数

    完全数,又称完美数或者完备数.是一些特殊的自然数.它所有的真因子的和,恰好等于它本身.编程找出1000以内的所有完全数,并输出该数成为完全数的因子. (例如6=1+2+3.按照6,its factor ...