您的位置:首页 > 新闻 > 会展 > 建设电动车官网_网页设计与自学教程_广东seo网站推广代运营_石家庄百度seo代理

建设电动车官网_网页设计与自学教程_广东seo网站推广代运营_石家庄百度seo代理

2024/12/23 10:50:06 来源:https://blog.csdn.net/akjhgi/article/details/144309459  浏览:    关键词:建设电动车官网_网页设计与自学教程_广东seo网站推广代运营_石家庄百度seo代理
建设电动车官网_网页设计与自学教程_广东seo网站推广代运营_石家庄百度seo代理

一、控制台输出和代码注释

(一)控制台输出

1、Debug:调试代码工具

    void Start(){Debug.Log("a");Debug.LogWarning("a");Debug.LogError("a");}

2、Log:一个功能,输出日志

(二)注释

注释是给人看的,机器忽视

1、//  注释

2、/**/ 注释

3、代码折叠: #region  #endregion

二、变量以及常用类型

(一)什么是变量

数据的抽象表示;可以变化的;自定义信息;可以表示一切

(二)常用变量类型

string(字符串):存储用户名、密码、角色名称、技能名称等

int(整数):角色等级、纯数字id等

float(浮点数):小数,存储时间这类对精度要求更高的数值

(三)变量的声明

类型  变量名 = 变量初始值;

string id = "liucahn";
int age = 18;
float num = 2003f;Debug.Log(id);
Debug.Log(age);
Debug.Log(num);

(四)变量的命名方法

方法:驼峰命名法

首字母不能是数字,但是后续可以是数字

三、转义字符

(一)转义字符

//转义字符是针对字符串的 
//特殊需求:输出双引号
//程序认为 双引号是特殊符号,包括起来的就是字符串
//\: 转义字符,他本身也是一个特殊符号
string myName = "\'Joker\'";
Debug.Log(myName);
//输出转义字符的方式,用转义字符去修饰
Debug.Log("\\\\");

 

\n 换行符 使用的比较多

(二)原义符

@:用来取消转义字符的特殊意义,要写在双引号外面

string myName1 = @"\'Joker\'";
Debug.Log(myName1);

四、字符串拼接

(一)+号连接

//加号拼接
string name = "Joker";
int age = 18;
Debug.Log("我是"+name+"我今年"+age+"岁");
//加号拼接
string name = "Joker";
int age = 18;
string info = name + age;
Debug.Log(info);

 

(二)$美元符号格式化输出

使用$美元符号和{} 关联使用

//$格式化输出 用{}包裹变量名
string qwer = $"我是{name},,我今年{age}岁";
Debug.Log(qwer);

五、变量的类型转换

(一)变量的定义方式

定义但没有赋值,不可以使用;

同类型变量批量赋值;

//批量定义,只需要写一次类型,使用逗号分隔变量名 
int a=1,b=2,c=3;
Debug.Log(a);
Debug.Log(b);
Debug.Log(c);

(二)等式的理解

等式右边的结果会赋值给左边,所以左边只能是变量,不能是数值;

等式右边的类型要和左边一致;变量可以在等式两边任何一边;

		int a1 = 1;int r1 = a1;Debug.Log(r1);

(三)数值的类型

数值也是有类型的。C#内置的类型背后都有一个实际类型。

string:String

int:Int32

float:Single

char:Char

(四)类型的转换方式

1、隐式转换

无需人为干涉的自动转换

要求:类型上的兼容;精度小的转为精度大的

int num = 10;
float fnum = num;//把num数值隐式转换为float类型
Debug.Log(fnum);

//另一种情况
float a = 10f;
int b = a;//无法隐式转换,因为int类型精度低于float类型精度,无法承载

这时候就需要进行显示转换 

2、显示转换

人为干涉的强制转换

要求:类型上的兼容;如果将精度大的转为精度小的,会丢失精度

//强转,丢失精度 (显示转换)
float num3 = 10.01f;
int m = (int)num3;
Debug.Log(m);

特殊:ToString()用法 ;将其他类型转换为string类型

//转为字符串
int age = 10;
float height = 180f;
string  agestr=age.ToString();
string heightStr= height.ToString();

3、Convert强行转换

本身对放进去的变量类型没什么限制,但是如果完全不具备转换的可能性,会报错

转换为Int:Convert.ToInt32

转换为float:Convert.ToSingle

转换为string:Convert.ToString

六、作用域和常量

(一)变量的作用范围

1、变量具备一个有效范围,这个范围就是它的作用域;

2、当大括号{}嵌套时:父级的变量可以用在子级中;子级的变量不可以用在父级中

private void Start()
{int num = 2;Debug.Log(num);
}
void Test()
{//Debug.Log(num);//无法调用其他语句块
}

3、变量只能在定义后使用

(二)常量(const)

常量是固定的值,程序运行时不会修改的值,比如:圆周率;

常量和变量类似,但常量在定义时必须赋值,其他时刻无法改变;

常量同样有作用域;

const int a = 2;
//a = 3;常量无法修改

 七、算术运算符

int a = 2;
int b = 2;
Debug.Log($"加法:{a+b}");
Debug.Log($"减法:{a-b}");
Debug.Log($"乘法:{a*b}");
Debug.Log($"除法:{a/b}");

//支持混合运算,运算顺序和小学数学一致
int c = (a + b) * (a / b) - a + b;
Debug.Log(c);

 

使用混合运算时,int和float计算,会把int转为float计算

1、取余

//取余
Debug.Log(4 % 4);//0
Debug.Log(3 % 4);//3//判断数值奇偶性
Debug.Log(5 % 2);//1 奇数
Debug.Log(4 % 2);//0 偶数

2、自增 自减

//自增1和自减1
int d = 3;
d = d + 1;//4
d++;
Debug.Log(d);//5
d--;
Debug.Log(d);//4

前++是先自加后使用

后++是先使用后自加

八、赋值运算符

int a = 3;
a += 4;//等同于a=a+4,7
a -= 5;//等同于a=a-5,2
a *= 5;//等同于a=a*5,10
a /= 5;//等同于a=a/5,2
a %= 5;//等同于a=a%5,2

九、Bool类型与关系运算符

(一)bool类型

一般用来描述 是与否、真与假、能与不能、正确与错误等情况。

True:是

False:否

(二)关系运算符 

string a = "123456qq";
string b = "123456qq";
bool c = (a==b);
Debug.Log(c);

//例子:除了战士,其他职业都可以进入
string A1 = "Warrior";
bool canEnter = A1 !="Warrior";
Debug.Log($"玩家可以进入:{canEnter}");

 十、逻辑运算符

1、&&和|| 都会发生短路机制

string a = "1234";
string b = "qwer";
bool UNmame = a == "1234";
bool UPassword = b == "qwer";
bool online = true;
bool Login = UNmame & UPassword & online;
Debug.Log($"玩家是否可以登录:{Login}");

在项目中为了避免更多的运算量,更多的是使用&&和||

只有这两个有短路机制

十一、三目运算符(条件运算符)

1、定义

三目运算符也叫做条件运算符

结果 = 如果条件为真 ? 则为X :否则为Y 

2、用法

//如果num小于0则返回0,否则返回他自己
int num = 1002;
num = num < 0 ? 0 : num;
Debug.Log(num);

 

//如果num小于0则返回0,否则返回他自己
int num = 1002;
num = num < 0 ? 0 : num;
Debug.Log(num);
int num2=num>100?100:num;
Debug.Log(num2);

 十二、if 判断语句

if :用来判断条件是否成立,即是否为true

else if : if 不成立,但是没满足我的条件 则执行

else : 以上条件都不满足则执行

注意事项:短路机制;{}作用域

int age = 17;
if (age > 18)//如果18岁
{Debug.Log($"什么都可以看");
}
else if (age > 16)
{Debug.Log($"大多数可以看");
}
else if(age > 14)
{Debug.Log("有一些不能看");
}
else if (age<14)
{Debug.Log("大多不能看!");
}

十三、枚举类型 

1、定义

当某个数据可以预期有确定性的几种结果时,可以使用枚举类型来保存

例如:AI=>待机、攻击、死亡

           时间=》星期、月份

          游戏状态=》选择英雄、加载界面、战斗中、游戏结束

2、用法

关键字:enum

enum AIState
{Idle,Attack,Die
}

enum AIState
{Idle,Attack,Die
}
public class Hello : MonoBehaviour
{private void Start(){AIState state= AIState.Idle;state=AIState .Attack;//切换到攻击状态//如果AI是待机状态if (state == AIState.Idle){Debug.Log("播放待机动作");}else if (state == AIState.Attack){Debug.Log("播放攻击动作");}else if(state == AIState.Die){Debug.Log("播放死亡动画");}int dex = (int)state;//使用显示转换 就是强转Debug.Log(dex);}
}

十四、switch判断语句 

1、和枚举配合在一起

enum AIState
{Idle,Attack,Die
}

把这个复制进来,然后鼠标点击旁边 会自动生成对应的case语句 

int num = 1;
switch (num)
{case 0:case 1:break;case 2:break;default:break;
}

这里相当于case0和case1逻辑在一起 
把break去掉就会按顺序执行下去 直到遇见break

十五、for循环语句

循环执行n次代码

for (int i = 0; i < 3; i++)
{Debug.Log(i);
}

		//从1+到100 等于多少int Res = 0;for (int i = 0;i <=100;i++){Res += i;Debug.Log(Res);}Debug.Log(Res);

十六、While循环语句

如果满足循环条件 就一直执行

注:while循环的判断条件不能一直是 true ;为了避免死循环

1、变种 do While 

至少执行一次,就是这个的特点

十七、函数的基本使用

1、封装

就是把代码封装成一个函数,在哪里用,就调用它

	private void Start(){Func();Func();}private void Func(){for (int i = 0; i <=100; i++){Debug.Log(i);}}

在这里,就是把Func封装成了一个类。

2、传参

在方法中传入对应的参数

private void Start()
{Func(100,"分数");}
private void Func(int a,string info)
{for (int i = 0; i <=100; i++){Debug.Log($"{info}:{i+a}");}
}

函数的参数是形参 而调用的方法参数是实参

实参和形参没有关系

这里形参300 实参100 

十八、函数重载

同名不同参数的函数

1、参数数量不相同

	int Add(int a,int b){int res = a + b;return res;}int Add(int a,int b,int c){return 1; }

2、参数类型不相同

	int Add(int a,int b){int res = a + b;return res;}int Add(int a,string b){int res=a+int.Parse(b);return res;}

 这里的int.parse 是转为int类型的方式

十九、函数的ref和out关键字

 ref:通常情况下,形参和实参只是值一样,但是并不是同一个变量, 如果通过ref则可以视为一个变量

out:函数的返回值只有一个,如果需要两个,则可以使用

	private void Start(){int a = 3;Function(a);//实参Debug.Log($"实参:{a}");}void Function(int a)//形参{a += 1000;Debug.Log($"形参:{a}");}

此时 在形参中加入关键字ref 形参和实参就会有影响

private void Start()
{int a = 3;Function( ref a);//实参Debug.Log($"实参:{a}");
}
void Function( ref int a)//形参
{a += 1000;Debug.Log($"形参:{a}");
}

//需求:
//1、请求登录,提供一个账号
//2、如果有此账号,返回True,并且返回密码
string password;
CheckLogin("Joker", out password);
/// <summary>
/// 检查登录
/// </summary>
/// <returns></returns>
bool CheckLogin(string userName,out string password)
{bool canLogin = userName == "Joker";if (canLogin){password = "123";}else{password = null;}return canLogin;
}

如果在调用这个方法的时候没有传入参数,按照形参默认值优先 

 如果调用这个方法,只有一个实参,也不会出问题,实参没有定义的值,按照形参来判断

注:默认的形参没有值,那么实参就必须定义值

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com