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. mac 删除自带 ABC 输入法的方法

    首先需要关闭 mac 系统的 SIP ,不然删不掉,不会关的可以查看我的另一篇文章:mac 关闭系统完整性保护 SIP(System Integrity Protection)的方法 . 关闭 SIP ...

  2. 使用libcurl下载文件小例

    libcurl是一个很强大的开源网络处理库,支持包括HTTP.HTTPS.FTP……一系列网络协议.用它来进行HTTP的get\post 或者下载文件更是小菜一碟,chrome内核都用到了它,本文主要 ...

  3. [转]Javascript 取小数点后面N位

    用Javascript取float型小数点后两位,例22.127456取成22.13,如何做? 1. 最笨的办法....... [我就怎么干的.........] }  2. 正则表达式效果不错 &l ...

  4. 解决ssh连接linux系统特别慢的问题

    新安装的centos系统,发现ssh连接很慢,因为是测试环境,对安全的要求不高,所以完全可以更快的连接,下面一起来解决这个问题. 一.分析主要原因: 1.SSH的反向DNS解析会消耗大量时间 2.GS ...

  5. kafka topic制定规则

    kafka topic的制定,我们要考虑的问题有很多,比如生产环境中用几备份.partition数目多少合适.用几台机器支撑数据量,这些方面如何去考量?笔者根据实际的维护经验,写一些思考,希望大家指正 ...

  6. python drf+xadmin+react+dva+react-native+sentry+nginx 搭建前后端分离的博客完整平台

    前言: 经过差不多半年的开发,搭建从前端到服务器,实现了前后端分离的一个集PC端.移动端的多端应用,实属不易,今天得空,好好写篇文章,记录这些天的成果.同时也做个分享. 演示网站地址: http:// ...

  7. Cobbler实现自动化安装(下)--实现过程

    实验环境 [root@cobbler ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@cobbler ~] ...

  8. ps命令 百度+加自己的理解

    ps故为process status的缩写,即为进程状态的命令, ps命令详解, 1)ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序.3)ps c 列出程序时, ...

  9. 多用户OFDM系统资源分配研究

    首先,OFDMA 是什么? OFDM 技术的基本原理是将无线信道划分为若干互相正交的子信道,把高速串行数据流转化为低速并行子数据流,低速并行子数据流在子信道上独立传输. OFDMA 是LTE的下行多址 ...

  10. 【Java】集合遍历--List和Map的多种遍历方式

    1. List的两种遍历方式 package com.nova.test; import java.util.ArrayList; import java.util.Iterator; import ...