Siki_Unity_1-4_C#编程(零基础)
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#编程(零基础)的更多相关文章
- 《Windows编程零基础学》第零节
首先很开心申请到了这一个专栏<Windows编程零基础学> 这是第一篇文章,在这里,我将讲述一些基础的知识. 什么是Windows编程 所谓Windows编程就是在Windows平台上开发 ...
- 编程零基础应当如何开始学习 Python?
提前说一下,这篇福利多多,别的不说,直接让你玩回最有手感的怀旧游戏,参数贴图很方便自己可以根据喜好修改哦. 本篇通过以下四块展开,提供大量资源对应. 选一个好版本 有没有看过<在下坂本,有何贵干 ...
- 类和对象:面向对象编程 - 零基础入门学习Python037
类和对象:面向对象编程 让编程改变世界 Change the world by program 经过上节课的热身,相信大家对类和对象已经有了初步的认识,但似乎还是懵懵懂懂:好像面向对象编程很厉害,但不 ...
- php编程零基础如何快速入门。门头沟编程
昨天遇到一个人,说知道thinktphp,不过几年前的事了. 我先跟他讲了下,xyhcms后台功能,各个版块,以及数据库都介绍了一下. 跟他说了一个功能现场实现,说了实现方法. 然后上机操作,发现他表 ...
- [置顶] 《Windows编程零基础》__2 一个完整的程序
Windows开发的常识 1)窗口 Windows中最基本的概念也许就是窗口了,每一个前台程序都至少有一个窗口,一个窗口也是你可以看到的部分,比如,QQ有如下的登录窗口 基本上你在Windows中可见 ...
- 零基础如何入门Python
编程零基础如何学习Python 如果你是零基础,注意是零基础,想入门编程的话,我推荐你学Python.虽然国内基本上是以C语言作为入门教学,但在麻省理工等国外大学都是以Python作为编程入门教学的. ...
- [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...
- [Python] 文科生零基础学编程系列三——数据运算符的基本类别
上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...
- TurnipBit—MicroPython开发板:妥妥拽拽零基础也能玩编程
可视化编程网站入口:www.turnipbit.com 说到编程.谈到硬件,你也许会想到屌丝逆袭女神的"传奇"故事,也许会浮现出带着眼镜.头发稀少.无精打采的程序猿形象." ...
随机推荐
- alibaba--java规范
18. [推荐]final 可以声明类.成员变量.方法.以及本地变量,下列情况使用 final 关键字: 1) 不允许被继承的类,如:String 类. 2) 不允许修改引用的域对象,如:POJO 类 ...
- ringMVC——redirect重定向跳转传值
spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 首先先来介绍一下不带参数的重定向: ...
- centos7生成密钥及集群之间免密登录
1.在本地生成密钥 命令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 2.进入.ssh文件夹,创建保存密钥的文件 命令:touch authorized_keys ...
- STM32之定时器输入捕获
1.输入捕获模式可以用来测量脉冲宽度或者测量频率.STM32的定时器,除了TIM6和TIM7,其他定时器都有输入捕获功能.STM32的输入捕获,简单的说就是通过检测TIMx_CHx上的边沿信号,在边沿 ...
- java.sql.date和java.util.date的区别和转换
不同点:java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分java.util.Date 是 java.sql. ...
- Oracle作业5——多表查询、子查询
一.基础练习: 1.查询和scott相同部门的员工姓名ename和雇用日期hiredate SELECT ENAME,HIREDATE FROM EMP WHERE DEPTNO=(SELECT DE ...
- ubuntu 18.04可以连接内网,无法连接外网
手动增加网关后,又重新sudo apt-get upgrade, 提示/etc/resolvconf/resolv.conf.d更新时,选Y后,不用手动修改网关也可以连接外网了. 一切默认更新后,1 ...
- SQL语句中生成UUID方法
SQL语句中生成UUID方法为UUID() 生成带横线UUID: select UUID() 形如:abaffaca-fd55-11e5-b3d0-d2 ...
- MySQL必知必会 读书笔记四:数据过滤
过滤数据 WHERE 只检索所需数据需要指定搜索条件( search criteria) ,搜索条件也称为过滤条件( filtercondition) . 在SELECT语句中,数据根据WHERE子句 ...
- colspan和rowspan合并单元格
最近在回顾html的时候,经常碰到一些table标签的问题,其中大多数都是合并单元格,所以在这里记录下自己的探究过程: <table cellpadding="0" cell ...