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 说到编程.谈到硬件,你也许会想到屌丝逆袭女神的"传奇"故事,也许会浮现出带着眼镜.头发稀少.无精打采的程序猿形象." ...
随机推荐
- SimpleProfile_GetParameter && SimpleProfile_SetParameter
/********************************************************************* * @fn SimpleProfile_GetParame ...
- EF Core 2.0中Transaction事务会对DbContext底层创建和关闭数据库连接的行为有所影响
数据库 我们先在SQL Server数据库中建立一个Book表: CREATE TABLE [dbo].[Book]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Cr ...
- 在spring添加注解时,第一行package报错configure build path
练习spring的ioc的注解的时候写上注解就会在第一行package报错configure build path. 用的spring4.2.4的jar包.经过上网查阅资料,可能是jar包冲突,解决办 ...
- vue-router笔记
1.vue-router 安装 在安装webpack模块时就安装了 eg: vue init webpack demo (安装webpack模块并取名为demo) 在安装模块时没有安装的话 ...
- FreeImage 生成带透明通道的GIF
主要方法: 加载图像及读取参数 FreeImage_Load FreeImage_GetWidth FreeImage_GetHeight FreeImage_Allocate FreeImage_G ...
- chromium之message_pump_win之二
接下来分析 MessagePumpForUI上一篇分析MessagePumpWin,可以参考chromium之message_pump_win之一 根据对MessagePumpWin的分析,Messa ...
- .net core 基于Claim登录验证
网站,首先需要安全,实现安全就必须使用登录验证,.net core 基于Claim登录验证就很简单使用. Claim是什么,可以理解为你的身份证的中的名字,性别等等的每一条信息,然后Claim组成一个 ...
- md5加密+盐方式一
这种方法是采用随机生成盐值加入password中组合成的新密码,下面是md5+盐的一个工具类,直接导入使用即可! 工具类 package com.oracle.utils; import java.s ...
- shell编程基础-01
1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的 ...
- 安装cronsun管理定时脚本
1. cronsun 是一个分布式任务系统,单个结点和 *nix 机器上的 crontab 近似.支持界面管理机器上的任务,支持任务失败邮件提醒,安装简单,使用方便,是替换 crontab 一个不错的 ...