运算符 相关内容 2:
| 关系运算符:
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A == B) 不为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 不为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 不为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
| 逻辑运算符:
运算符 | 描述 | 实例 |
---|---|---|
&& | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (A && B) 为假。 |
II | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (A II B) 为真。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(A && B) 为真。 |
| 三目运算符:
运算符 | 描述 | 实例 |
---|---|---|
? | 条件表达式 | a > b ? a : b 如果条件为真,? 返回 a,否则返回 b |
课程内容 - 关系运算符:
void Func1()
{
int a = 5;
int b = 4;
// > >= < <= == !=
/* if ( a > b )
{
Debug.Log("a > b");
}
else if (a < b)
{
Debug.Log("a < b");
}
else
{
Debug.Log("a == b");
} */
if ( a != b )
{
Debug.Log("a != b");
}
else
{
Debug.Log("a == b");
}
}
课程内容 - 逻辑运算符:
void Func2()
{
// && || !
// && 关系表达式中 所有条件都满足,才为 true
// || 关系表达式中 只要一个条件满足,就为 true
// ! 逻辑非运算符 就是 true 变成 false ,false 变成 true
int a = 1;
int b = 2;
/* if (a != 0 && b != 0)
{
Debug.Log("---");
}
else
{
Debug.Log("+++");
} */
/* if (a > 2 || b == 2)
{
Debug.Log("---");
}
else
{
Debug.Log("+++");
} */
if (!(a > 2))
{
Debug.Log("---");
}
else
{
Debug.Log("+++");
}
}
课程内容 - 三目(元)运算符:
void Func3()
{
int a = 1;
int b = 2;
// 条件 ? 表达式1 : 表达式2
// 满足条件 --》 执行表达式1,否则执行表达式2
int c = a > b ? 100 : 1000;
Debug.Log(c);
}
运算符 相关内容 3:
| 位运算符:
下表列出了 C# 支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:
运算符 | 描述 | 实例 |
---|---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 12,即为 0000 1100 |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 |
^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 | (A ^ B) 将得到 49,即为 0011 0001 |
~ | 按位取反运算符是一元运算符,具有”翻转”位效果,即0变成1,1变成0,包括符号位。 | (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。 |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 将得到 240,即为 1111 0000 |
>> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2 将得到 15,即为 0000 1111 |
课程内容:
void Func1()
{
// & 相同位都为 1,才为 1,否则为 0
// | 相同位只要有一个为 1,那就为 1,否则为 0
// ^ 相同位标志位一致的话,则为 0,否则为 1
// ~ 对每一位进行取反 0--》1;1--》0 同时运算符的符号 需要取反
int a = 60; // 0011 1100
int b = 13; // 0000 1101
// c 0000 1100
// d 0011 1101
// e 0011 0001
// f 1100 0011
int c = a & b;
Debug.Log("c:" + c);
int d = a | b;
Debug.Log("d:" + d);
int e = a ^ b;
Debug.Log("e:" + e);
int f = ~a;
Debug.Log("f:" + f);
}
逻辑判断语句 相关内容:
| 分为两类:
if(){}else{}
:条件检测的方式是 线性判断,只要满足前者条件,那后续条件就检测直接跳过switch(xxx){ case:{}break; default:{}break; }
:后面一定要跟着 break;
| 一些知识点:
Start :Unity 初始运行时 只被执行一次 ,即在第一帧被调用
Update :Unity运行时,会被实时调用,即在每一帧被调用,且渲染帧不固定
变量:
局部变量 - 作用域 限于本函数内临近的{…}
类的成员变量 - 作用域 类内的任何地方,都可以访问到这个变量
public 可以在监视面板使用成员变量
| 制定行为:
起床
洗漱
吃饭
找小姐姐
…Unknow:不知道
课程内容 - if:
public int value;
void Update()
{
Func1();
}
void Func1()
{
/* if (value > 5)
{
Debug.Log("value > 5");
}
else if(value > 10)
{
Debug.Log("value > 10");
} */
if (value == 1)
{
Debug.Log("1.起床");
}
else if (value == 2)
{
Debug.Log("2.洗漱");
}
else if (value == 3)
{
Debug.Log("3.吃饭");
}
else if (value == 4)
{
Debug.Log("4.找小姐姐");
}
else
{
Debug.Log("...不到呀");
}
/* if (value == 1) // 单句可以不加括号
Debug.Log("1.起床");
/*if (value == 1 ||value == 2)
{
Debug.Log("if满足条件");
}*/
}
课程内容 - switch:
public int value;
void Update()
{
Func1();
Func2();
}
void Func2()
{
/*switch (value)
{
case 1:
case 2:
Debug.Log("switch满足条件");
break;
}*/
switch (value)
{
case 1:
{
Debug.Log("1.起床");
}
break;
case 2:
{
Debug.Log("2.洗漱");
}
break;
case 3:
{
Debug.Log("3.吃饭");
}
break;
case 4:
{
Debug.Log("4.找小姐姐");
}
break;
default:
{
Debug.Log("...不到呀");
}
break;
}
}
枚举 相关内容:
| 概念介绍:
枚举类型使用 enum
关键字声明,包含一些易读的标识符。
enum <enum_name>{enumeration list};
课程内容:
Enum <-> int
Enum <-> srting
使用本节课讲解的枚举,对上节课的行为做 易读性处理, 来体现 枚举的意义
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System; // 本节课新加 using
public class EnumTest : MonoBehaviour
{
public enum emAction
{
None,
GetUp,
Wash,
Eat,
Play,
/*None = 0,
GetUp, // 0 + 1 = 1
Wash, // 1 + 1 = 2
Eat, // 2 + 1 = 3
Play, // 3 + 1 = 4*/
/*None = 10,
GetUp, // 10 + 1 = 11
Wash, // 11 + 1 = 12
Eat,
Play,*/
}
public emAction mAction = emAction.None;
void Start()
{
// Func1();
}
void Update()
{
// Func1();
Func2();
}
void Func1()
{
// Debug.Log(mAction);
// Debug.Log(mAction.ToString());
// Enum <-> string
// mAction.ToString() Enum --> string
// mAction = (emAction)Enum.Parse( typeof(emAction), "Wash" ); string --》 Enum
// mAction = (emAction)Enum.Parse( typeof(emAction), "Wash111" ); 没有这个 Wash111 所以会报error
// Enum <-> int
// int iPlay = (int)mAction; Enum -> int
// mAction = (emAction)3; int -> Enum
// mAction = (emAction)Enum.ToObject(typeof(emAction), 1); int -> Enum
// Debug.Log( "Enum --》 int:" + iPlay );
// Debug.Log("int --》 Enum:" + mAction);
// Debug.Log( "int --》 Enum:" + mAction );
switch (mAction)
{
case emAction.GetUp:
{
Debug.Log("1.起床");
}
break;
case emAction.Wash:
{
Debug.Log("2.洗漱");
}
break;
case emAction.Eat:
{
Debug.Log("3.吃饭");
}
break;
case emAction.Play:
{
Debug.Log("4.找小姐姐");
}
break;
default:
{
Debug.Log("...不到呀");
}
break;
}
}
void Func2()
{
// 自练
if (mAction == emAction.GetUp)
{
Debug.Log("1.起床");
}
else if (mAction == emAction.Wash)
{
Debug.Log("2.洗漱");
}
else if (mAction == emAction.Eat)
{
Debug.Log("3.吃饭");
}
else if (mAction == emAction.Play)
{
Debug.Log("4.找小姐姐");
}
else
{
Debug.Log("...不到呀");
}
}
}
循环语句 相关内容:
| for 循环:
for(条件表达式)
{
循环体
}
演示:
void Start()
{
// 语法问题
// int i = 0; 定义变量
// i < length; 检测条件
// i ++ 自增自减语句
// Times i的值
// 1 0
// 2 1
// 3 2
// ...
for (int i = 0; i < 10; i++) // i++ == i = i+1
{
Debug.Log(i);
}
Debug.Log("----------------------------------------");
// Times i的值
// 1 10
// 2 9
// 3 8
// ...
for (int i = 10; i > 0; i--) // i-- == i = i-1
{
Debug.Log(i);
}
// % 取模运算符 输出一个余数
// 通过for循环语句的形式,将 1 ~ 100 之间的能被 2 整除的数,把他们找出来
for (int i = 1; i <= 100; i++)
{
if (i % 2 == 0)
{
Debug.Log("能被 2 整除:" + i);
}
else
{
Debug.LogWarning("不能被 2 整除:" + i);
}
}
}
| while 循环:
while(条件表达式)
{
循环体
}
演示:
// 语法
// while 关键字
// (true) 检测条件
int i = 0;
while (i < 10)
{
// 循环体
Debug.Log(i);
i++;
}
/*
int i = 10;
while (i > 10) // 首先会 前置检测条件是否满足,满足的话,才执行循环体,否则跳过
{
Debug.Log("+++");
}
Debug.Log("!!!");
*/
| do while 循环:
do
{
循环体
} while(条件表达式)
演示:
int i = 10;
do
{
Debug.Log("do while +++");
} while (i > 10);
Debug.Log("!!!"); // 两个都会被打印出来
小作业:
// % 取模运算符,输出一个余数
// 通过 while 循环语句的形式,将 1~100 之间的能被 2 整除的数,找出来
int i = 1;
while (i <=100 )
{
i++;
if (i % 2 ==0)
{
Debug.Log("能被 2 整除:"+ i);
}
}
| 补充知识:
continue 跳过
break 打断
++ i 和 i ++ 的区别:
++i : 先对 i 的值执行 i = i + 1,然后在对左侧的变量赋值。【先加后用】
i++ : 先对左侧的变量赋值,执行完该语句后,在对其进行重新赋值。【先用后加】
1、2演示:
// 检索 1~100 之间的值
// 如果值 = 50 跳过,但是继续执行 continue
// 如果值 = 51 终止循环语句 break
for (int i = 1; i <= 100; i++)
{
//if (i == 50)
// continue;
//Debug.Log(i);
if (i == 51)
break;
Debug.Log(i);
}
3演示:
int i = 10;
int j = 10;
int a = ++i; // i = i + 1
int b = j++; // j = j + 1 在这一行以下才会 +1
Debug.Log("[前置++]a:" + a);// 11
Debug.Log("[后置++]b:" + b);// 10
小作业:
// 检索 1~100 之间的值
// 如果值 = 50 跳过,但是继续执行 continue
// 如果值 = 51 终止循环语句 break
// 用 while 演示
int i = 1;
while (i<=100)
{
i++;
/*
if(i == 50)
{
continue;
}
Debug.Log(i);
*/
if(i == 51)
{
break;
}
Debug.Log(i);
}