C# 基础

教程:siki学院 Unity中的C#编程 - 零基础 39课时

时间:4.24 - 4.30

 

C#零基础笔记

1. 日志输出

print(1)  // 继承自MonoBehaviour可以用print输出

Debug.Log(1)   //不管继承,全部都可用这个输出

Debug.LogWarning //警告输出

Debug.LogError("error") //错误输出

2. 注释快捷键 ctrl+k ctrl+c

 

3. 声明变量

  不能以数字开头,可以包含字母、数字、下划线

  int hp = 100 

  或者

  int hp;  ->变量声明

  hp = 100;  ->变量初始化

 

4. 数据类型 - 不同的整数类型所占内存不一样

 

 

 

  ② . 浮点类型

    float类型用于较小的浮点数,因为它的精度要求较低

    double类型比float类型大,进度大一倍(15位)

    float hp = 3.4f (3.4默认是double类型,3.4f 表示是一个float类型的3.4)

  ③. bool类型

    bool isDie = false/true  表示状态的是或否

  ④. 字符/字符串类型

    char c = 'a' 

    string name = "silvia" 

  ⑤. 枚举类型

    声明职业类型:

    enum RoleType{

      Mag,

      Soldier,

      Wizard

    }  

    使用:   

    RoleType rt = RoleType.Mag  

    rt = RoleType.Soldier 

 

5. 算术操作符 + - *  / %

  float res = 3+3.4f  int和float类型进行加法运算,返回的结果是数据类型大的float类型,如果res定义为int会报错

       string str1 = "my name is" ;

  string str2 = "silvia"

  string res2 = str1 + str2

 

6. if语句

if(hp<=0){
    print("播放死亡动画")
}
else{
    print("播放行走动画")
}

 

7. 数组声明和使用

 方式一: int[ ] hps = {100,80,90,30} 声明一个整型数组

 方式二: int[ ] hps2 = new int[10]   声明一个全为默认值0的数组

 int[ ] hps; //这样hps数组不存在,没有构造,不能被使用,会报错

 int[ ] hps2 = { };这样hps2存在,可以被输出,但是数组长度为0

   方式三: int[ ] hps = new int[5]{100,80,90,30,20} 既指定了数组的长度,又指定了数据的值

 

8. Vector3 unity数据类型

 new Vector3(1,1,1)

 

9. 类的创建、声明、构造

主类,与文件名一致的类

public class learnCsharp : MonoBehaviour{
    void Start(){
       int hp = 100;
       Enemy enemy1 = new Enemy();    //类的对象的声明和构造
       print(enemy1.name)  //要调用对象里的属性,属性要设置为public
       print(enemy1.hp) 
       enemy1.name = 'tony'  //修改属性赋值

       Enemy enemy2 = new Enemy();  //创建第二个对象

       enemy1.Move();
       enemy2.Move();

  }        
}

// 类的定义:
class Enemy{
      public string name;
      public int hp;     

      public void Move(){
        Debug.Log(name+"正在移动");
   }  

      public void Attack(){
        Debug.Log(name+"正在攻击");
   } 
}

 

10. Input.GetAxis("Horizontal") 获得用户水平方向

11.创建脚本和附加脚本

     ① 创建脚本 拖到物体上

     ② Add component

12. 当脚本中的值和inspect面板上的值不一致,输出inspect面板上的值

       定义的private的变量不会出现在inspect上

       没有给定public 和 private 默认是private

 

13. if 变形 和 枚举类型 switch-case 的使用

int heroType = 0 // 1soldier 2master 3assassin 4tank 5shooter

if(heroType ==1){

}else if(heroType ==2){

}else if(heroType ==3){

}else if(heroType ==4){

}else{

}
enum HeroType{
    soldier,
    Master,
    Tank,
    Assassin,
    Shooter
}


HeroType heroType = HeroType.soldier

if(heroType == HeroType.soldier){

}else if(heroType == HeroType.Master){

}else if(heroType == HeroType.Tank){

}else if(heroType == HeroType.Shooter){

}else{

}

 

switch case判断:

switch(heroType){
    case HeroType.Soldier:
        print("战士发动技能");
        break;
    case HeroType.Master:
        print("法师发动技能");
        break;
    case HeroType.Assassin:
        print("刺客发动技能");
        break;
    case HeroType.Tank:
        print("坦克发动技能");
        break;
    default:
        print("default");
        break;
}

 

14.for、while、dowhile循环

15. foreach遍历

foreach(Transform t in children){
      //t表示其中的每一个元素
     if(t!=transform)  //transform是当前游戏物体
          Destory(t.gameObject); 
}

 

16.组件的获取

void Start(){

    Transform t = GetComponent<Transform>();  //获得自身的transform组件
   
    Collider[] colliders = GetComponent<Collider>(); //获得所有的封装器组件

    GetComponent<BoxCollider>() ;//只获得盒子封装器

    getComponentsInChildren<Transform>() //获得Transform子组件
 
    //也可以获得别的物体的组件

    public GameObject player;
    print(player.GetComponent<Rigidbody>()); //获得player的rigidbody刚体组件

组件禁用:

BoxCollider collider = GetComponent<BoxCollider>()

collider.enable = false  //组件禁用

 

17. 获取游戏物体的4种方式

// 方法1 通过拖拽

public GamObject cameraMain;  //如果是游戏物体 则必须拖拽游戏物体
  
public Camera maincamera;   //如果是组件 则必须是同一类型的组件

// 方法2 transform.Find("查找路径")
void Start(){
    transform.Find("GameObject(1)/GameObject");
    transform.Find("GameObject(2)")
}

// 方法3 GameObject.Find("游戏物体名")
   GameObject.Find("Main Camera") //返回第一个查找这个名字的游戏物体
//这个方法不推荐使用,因为是根据名字查找,比较耗费性能,在全局里遍历遍历游戏物体的名字;

// 方法4 使用Tag标签查找 推荐方式 速度快 只会去找指定的标签
GameObject.FindWithTag("Player");

 

posted @ 2020-04-24 18:33  柯柯冲基波keke  阅读(194)  评论(0)    收藏  举报