-
Visual Studio基础操作
1.ctrl+F5 启动
2.Home 键可定义到一行代码的最前端,End键可定义到一行代码的最后端
PageUp及PageDown是对当前文档的翻页
3.ctrl+k ctrl+c 组合快捷键 注释多行;ctrl+k ctrl+u 组合快捷键 取消多行注释
4.ctrl+d 可直接复制黏贴代码,无需ctrl+c ctrl+v
-
C#基础内容及Unity中基础使用
1.命名规则: 变量:enemyHp,方法或类:EnemyHp
2.输入输出:
//输出
Console.WriteLine();
//格式化输出
Console.WriteLine("两个数相加{0}+{1}={2}",a,b,c);
//or
Console.WriteLine("a"+a+" ");
//单个输出
Console.Write();
//输入
Console.ReadLine(); //输入为字符串
//常用输入
int a = Convert.ToInt32(Console.ReadLine()); //单变量输入
//输入一串长度未知的数组
string str = Console.ReadLine();
string[] array = str.Split(' ');
int[] numarray = new int[array.Length];
int i = 0;
foreach (string tmp in array)
numarray[i++] = Convert.ToInt32(tmp);
//让程序暂停,按任意键继续
Console.ReadKey();
//U3D中的控制台输出
print();
Debug.Log();
Debug.LogWarning(); //警告
Debug.LogError(); //错误
3.变量
//float 输入小数会默认为double
float myFloat = 12.5f;
double myDouble =12.6;
//隐式显示转换
//小到大为自动,如int->double
//大到小
byte myByte=(byte)myInt;
//字符串转数字
int num = Convert.ToInt32(str);
double num = Convert.ToDouble(str);
int num = Convert.ToString(str);
4.特殊运算及字符
①@会让转义字符(如\n)无效,最终输出为\n
②三目运算符
string resStr =(myInteger<10)?"less than 10":"Greater than 10";
③随机数
Random random = new Random();
int num = random.Next(1, 7); //含最小值不含最大值
5.不太熟的几个选择及循环
//Switch
int state =3;
int switch(state)
{
case 0:{/*执行语句;*/break;} //state==0
case 1:{/*执行语句;*/break;} //state==1
//...
default:{/*一个情况都不等于时;*/;break;}
}
//while
while(){ }
//do while
do{ }while();
//foreach
foreach(int tmp in array)
Console.WriteLine(tmp); //不知道索引
6.枚举
//枚举定义
enum GameState
{
Pause, //数值上默认为0
Failed, //数值上默认为1
Success, //数值上默认为2
Start //数值上默认为3
}
//枚举使用
GameState state = GameState.Start;
if(state == GameState.Start)
//枚举数据类型修改
enum GameState:byte //数据以byte存储,默认为int
{
Pause,
Failed,
Success,
Start
}
7.结构体
//结构体定义
struct Position
{
public float x;
public float y;
public float z;
}
//结构体使用
//声明 position enemyPositon;
//调用内部变量 enemyPosition.x=12;
//结构体与枚举组合使用
//声明时
enum Direction{West,North,East,South}
struct Path
{
public float distance;
public Direction dir;
}
//使用时
path path1;
path1.dir=Direction.East;
path1.distance=1000;
//结构体函数
//结构体内函数正常定义
//调用时
CustomerName myname; //CustomerName为一个结构体名
Console.WriteLine(myName.GetName());
8.数组
//数组声明
int[] scores;
//初始化
//1
int[] scores={23,12,45,77,14,56};
//2
int[] scores=new int[10];
//3
int[] scores=new int[10]{123,12,23,45,56,78,44,76,23,85};
//排序
Array.sort(numArray);
//数组传参
//return 数组
static int[] GetDivisor(int number)
{
//...array在内部初始化
return array;
}
//外部调用时
int[] array=GetDivisor(num);
//数组为形参
static int max(int[] array)
//外部调用时
max(array);
//参数数组
static int Plus(params int[]array)
//调用时
int sum2=Plus(23,4,5,66,23,56);
//使用参数数组时实参可随便写,会在函数内部自动构造为一个数组
9.字符串数组
//初始化
string[] names = new string[]{"xxx","xx","xxxxx","x"};
//new string[]中[]的个数可写可不写
//遍历
for(int i=0i<array.Length;i++){ }
//or
foreach(string tmp in array)
Console.WriteLine(tmp);
//常用方法
str.ToLower(); //返回字符串小写副本
str.ToUpper(); //返回字符串大写副本
str.Trim(); //去除所有前导空格和尾部空格
str.Start(); //去除所有前导空格
str.End(); //去除所有尾部空格
str.split(); //按照指定字符拆分得到多个拆分后的字符串数组
10.委托
public delegate double Mydelegate(double parm1,double parm2);
//定义一个委托和函数差不多,区别在于定义委托加delegate关键字,委托的定义不需要函数体
static double Multiply(double parm1,double parm2)
{ return parm1 * parm2 ; }
//调用时
MyDelegate de;
de=Multiply;
de(200,34.1);
//委托的返回值和参数需与委托的函数一致
11.类
//类定义
class Enemy{
public string name;
int hp;
}
//声明
Enemy enemy1 = new Enemy();
//默认情况下 Enemy enemy1 = null;
//调用方法或变量
enemy1.name;
//命名空间
//不同命名空间下有不同的类,如需使用某个类,需要先引入命名空间
using xxx; //引入
namespace MyGame{
} //定义
12.U3D中组件及游戏物体的获取
//获取组件
Transform t = GetComponent<Transform>();
collider[] colliders = GetComponents<Collider>();
//获取物体下的所有collider组件
GetComponentsInChildren<Collider>(); //获取游戏物体下所有Collider子组件
GetComponentInChildren<Collider>(); //获取游戏物体下找到的第一个Collider子组件
//组件调用
public GameObject player; //此时在u3d中拖拽物体入player
player.GetComponent<Rigidbody>(); //调用
//禁用组件
BoxCollider collider = GetComponent<BoxCollider>(); //获取该物体的boxcollider
collider.enabled=false; //禁用,其下方法均无法使用
//启用脚本
learn02.Start(); //脚本名为learn02
//获取游戏物体GameObject
//1.
public GameObject //再在u3d中拖拽物体
//or
public Camera mainCamera; //此时只能拖拽有Camera这个组件的GameObject
//2.
transform.Find("GameObject(1)/GameObject")
//找到GameObject(1)下的GameObject
//3.
GameObject mainCamera = GameObject.Find("Main Camera");
//查找到第一个叫Main Camera的物体
//4.标签,需先在unity中设置好tag
GameObject player = GameObject.FindWithTag("Player");