Unity及C#入门学习 :C#语法基础

Unity及C#入门学习 :C#语法基础


文章目录

  • Unity及C#入门学习 :C#语法基础
  • 前言
  • 一、变量及数据类型
  • 二、数组
  • 三、函数
    • 1. 访问修饰词
    • 2. 返回类型修饰词
    • 3. 其它修饰词
  • 四、运算符及逻辑语句
    • 1.赋值运算符
    • 2.算术运算符
    • 3.逻辑运算符及逻辑语句
      • (1)一般逻辑运算符
      • (2)三目运算符
      • (3)if else语句
      • (4)switch 语句
    • 4.位运算符
  • 五、枚举
  • 六、循环语句
    • 1. for循环
    • 2. where循环
    • 3. do where循环
  • 总结


前言

此章节主要总结C#脚本在Unity的运用中需要学习的基本语法内容,主要包括变量,数据类型,数组,函数等基础的C#编程语法知识


一、变量及数据类型

变量指的是可以随时修改、变更的量,而数据类型则是规定了变量的种类。在C#中,通常使用 数据类型 变量名; 的方式来定义一个变量。
在C#的使用中,常见的数据类型有:

数据类型 取值范围
byte 0 - 255
short -32768 - 32767
ushort 0 - 65535
int -2^31 - 2^31-1
uint 0 - 2^32
long -2^63 - 2^63-1
ulong 0 - 2^64
float 7位小数
double 15 - 16位小数
char 单个字符
string 字符串
bool true / false

在C#当中,可以用如下的一些语法定义,赋值,修改变量

int integer = 10;
Debug.Log("修改前的integer值为:" + integer);
integer = 30;
Debug.Log("修改后的integer值为:" + integer);

二、数组

数组即为变量的连续地址的集合。数组类型在C#当中属于引用类型(在一中举例出的常见型中,string也属于引用类型,其它都属于值类型。它们的具体区别会在之后的学习中提及,在此只需要记住便可),在使用时不可以单纯的使用 数组类型[] 数组名; 的方式来定义使用,而是必须使用 new 关键词来创建一个新的空间来存放该数组。

代码如下,可在vs中自己编译尝试:

int[] a; // 如果在此处后直接进行,例如a[0] = 0的操作,会报错

// 数组的几种常见初始化方法
a = new int[5]; // 开辟一个大小为5,无初值的数组
a = new int[]{1, 2, 3}; // 开辟一个大小为3,初值为1,2,3 的数组
a = {1, 2, 3}; // 与上个操作效果相同,不过是另一种语法形式

三、函数

函数,也叫方法,在实际使用中用于规整冗杂的重复代码块,可以在每需要使用时,通过函数名的调用,快捷的得到自己想要的结果。
函数定义的一般形式为修饰词 函数名(参数) {函数体}
函数的在定义时需要注意以下几种修饰词

1. 访问修饰词

访问修饰符用于限制函数的访问权限,常用的访问修饰词有如下几种

修饰词 可访问范围
public 在所有地方可以访问
private 在函数所在的类中能访问
protected 在函数所在的类及其子类中可访问
internal 在函数所在的类及其程序集中可访问
protected internal 上述两种的合体版

2. 返回类型修饰词

返回类型修饰词用于规范函数返回的值类型,其常见类型与数据类型相同。需要特别注意的是,函数有void类型,该类型不返会任何值。

3. 其它修饰词

余下修饰词会在类的学习中更加频繁的学习和使用,在此处有印象即可。

修饰词 作用
static 用于定义静态函数
abstract 用于定义抽象函数
virtual 用于定义虚函数
override 用于重写函数

函数使用实例,计算a + b的值并返回int型:

// 需求: 计算a + b的值并返回int型
public int Sum(int a, int b)
{
	return a + b;
}

void Start()
{
	int a = 10, b = 20;
	int sum = Sum(a, b);
	Debug.Log("a + b的值为:" + sum);
}

四、运算符及逻辑语句

在C#语法中,运算符主要包括赋值运算符,算术运算符,逻辑运算符(包括三目运算符),位运算符几种。其中逻辑运算符,常配合逻辑语句使用。下面介绍几种常见运算符的用法。

1.赋值运算符

作用是给变量赋值,使用模式为变量 = 常量变量 = 变量,来对变量进行值的赋予或篡改,也可以使用变量 = 运算式的方式,来给变量进行赋值。

2.算术运算符

即在数学中常用的加减乘除等运算,用于值的计算,也可以和赋值运算符配合用于赋值。

运算符 运算规则 举例
+ 加法规则 5 + 3 = 8
- 减法规则 5 - 3 = 2
* 乘法规则 5 * 3 = 15
/ 除法规则 5 / 3 = 1
% 取余运算 5 % 3 = 2

使用实例,计算a,b的上述5种运算结果,分别赋值给num并输出

// 需求:计算a,b的上述5种运算结果,分别赋值给num并输出

int a = 5, b = 3;
int num;
num = a + b;
Debug.Log("a + b = " + num);
num = a - b;
Debug.Log("a - b = " + num);
num = a * b;
Debug.Log("a * b = " + num);
num = a / b;
Debug.Log("a / b = " + num);
num = a % b;
Debug.Log("a % b = " + num);

3.逻辑运算符及逻辑语句

(1)一般逻辑运算符

一般运算符常与逻辑语句配合使用,返回bool型的值(true/flase),常用的逻辑运算符有以下几种。

运算符 运算规则
< 判断前置是否小于后置,若是则返回true,否则返回false
<= 判断前置是否小于等于后置,若是则返回true,否则返回false
> 判断前置是否大于后置,若是则返回true,否则返回false
>= 判断前置是否大于等于后置,若是则返回true,否则返回false
== 判断前置是否等于后置,若是则返回true,否则返回false
&& 判断前后两个判别式是否全为真,全为真返回true,否则返回false
丨丨 判断前后两个判别式是否全为假,全为假返回false,否则返回true
! 判断当前判别式为true,则返回false,反之亦然

(2)三目运算符

三目运算符的一般格式为判别式 ? 语句1 : 语句2,当判别式为true时,则执行语句1,若判别式为false,则执行语句2。

(3)if else语句

if else语句的一般使用形式如下:
if( 判别式1 ) { 代码块 }
else if( 判别式2 ) { 代码块 }
……(可一直重复else if)
else { 代码块 }

运用实例,比较三目运算符和if else语句,判断a,b的大小

//比较三目运算符和if else语句,判断a,b的大小

int a = 10, b = 20;

// 三目运算符
a < b ? Debug.Log("a小于b") : Debug.Log("a大于b");

// if else语句
if(a < b)
{
	Debug.Log("a小于b");
}
else
{
	Debug.Log("a大于b");
}

(4)switch 语句

switch语句(开关)常用在一个需要判别的变量,存在多种判别结果的场景。虽然用if else语句可以完成同样的功能,但switch语句可以使代码更加整齐、简单。switch的定义形式如下:
switch( 判别变量 )
{
case 情况1:
{ 代码块 }
break;
case 情况2:
{ 代码块 }
break;
……(可以一直增加情况)
default:
{ 代码块 }
break;
}
在C#的使用中,switch语句常和枚举类型一起出现,在枚举类型中,将会一并展现两者的用法。

4.位运算符

位运算符的运算规则主要作用于变量的二进制存储形式上。在此我们举例a = 5,b = 3的情况下,一些常见位运算符的运算结果。

a = 5 = 0101(2)
b = 3 = 0011(2)

运算符 运算规则 运算举例及结果
两边全0返回0,否则返回1 a丨b = 0111 = 7
& 两边全1返回1,否则返回0 a & b = 0001 = 1
^ 两边不同返回1,否则返回0 a ^ b = 0110 = 6
~ 对二进制取反 ~a = 1… 1111 1010

五、枚举

枚举类型中可以定义多个属性,来方便我们完成对一个多属性变量的操控。枚举类型的定义方法如下:
访问级修饰词 enum 枚举名
{
属性1,
属性2,
……
属性n
}

以下是一些常用的关于enum的类型转换操作

enum 转 string

public enum emAttribute
{
	attribute1,
	attribute2,
}

emAttribute mAttribute = emAttribute.attribute1
// 1. 直接输出
Debug.Log(mAttribute);

// 2. ToString函数
Debug.Log(mAttribute.ToString());

string 转 enum,使用Parse方法

string str = "attribute2"; // 只能转enum中有的字符
mAttribute = (emAttribute)Enum.Parse(Typeof(emAttribute), str)

enum 转 int

// 	直接强制转换
Debug.Log((int)mAttribute);

int 转 enum

int num = 0;

// 1 直接强制转换
mAttribute = (emAttribute)num;
Debug.Log(mAttribute);

// 2. ToObject方法转换
mAttribute = (emAttribute)Enum.ToObject(Typeof(emAttribute), num);
Debug.Log(mAttribute);

在实际的使用过程中,enum常于switch配合使用,可以让代码更加的工整,使其可读性大大提高。接下来通过一个实例了解switch和enum在代码中的实际运用方法。

实例:下列时某人今天做过的事,请你在他正在做这件事的时候打印出该事件:

  1. 吃早饭
  2. 学英语
  3. 玩耍
  4. 发呆
/*
	需求:
		下列时某人今天做过的事,请你在他正在做这件事的时候打印出该事件:
			1. 吃早饭
			2. 学英语
			3. 玩耍
			4. 发呆

*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public enum emAction
{
	None,  // 占位符
	haveBreakfast,
	learnEnglish,
	play,
	doNothing
}

public emAction mAction = emAction.None;

void Start()
{

}

void Update()
{
	switch (mAction)
        {
            case emAction.haveBreakfast:
                {
                    Debug.Log("Have Breakfast");
                }
                break;
            case emAction.learnEnglish:
                {
                    Debug.Log("Learn English");
                }
                break;
            case emAction.play:
                {
                    Debug.Log("Play");
                }
                break;
            case emAction.doNothing:
                {
                    Debug.Log("Do Nothing");
                }
                break;
            default:
                {
                    Debug.LogError("Have Not This Choise");
                }
            break;
        }
}

六、循环语句

循环语句主要用于简化需要重复执行的冗杂代码块,其主要语法有三种,分笔试for循环,where循环和do where循环。其中for循环和where循环十分相似,只有语法略微不同,而do where循环还有一点需要注意,即在第一次进入循环时,会把其中代码先执行一遍,再进行判断。
下面我们用三种循环语句,来实现1-100的值的累加,以此学习三种循环的具体使用方法。

1. for循环

定义方式为 for(变量; 判别式; 变量计算) { }
代码实践如下

// 计算 1-100 的累加值
int sum = 0;
for(int i = 1; i <= 100; i ++)
{
	sum += i;
}
Debug.Log("累加的值为:" + sum);

2. where循环

定义方式为 where(判别式) { }
代码实践如下

// 计算 1-100 的累加值
int sum = 0;
int i = 1;
where(i <= 100)
{
	sum += i;
	i ++;
}
Debug.Log("累加的值为:" + sum);

3. do where循环

定义方式为 do { } where(判别式);
代码实践如下

// 计算 1-100 的累加值
int sum = 0;
int i = 1;
do
{
	sum += i;
	i ++;
}where(i <= 100);
Debug.Log("累加的值为:" + sum);

总结

以上就是C#的基础语法部分,实际上与C、C++以及Java等编译语言存在着许多相同,类似的地方,因此如果有以上几种语言基础的话,可以很快理解C#的语法,因此对于原理方面的解释较少,更多体现的是C#的语法特点。
因为在此专题中,对C#的学习主要是为了服务与Unity的学习和使用,对于语法中有疑惑的部分,建议在Unity环境下创建的C#脚本中进行实验练习。

你可能感兴趣的:(c#,unity,学习)