39225人加入学习
(83人评价)
Unity中的C#编程 - 零基础(Unity 2017)

完成于2017-11-06

价格 免费

获取游戏物体:

拖拽赋值,要求前后一致

 

 

获取游戏物体的子物体:

transform.Find("")

//(“”)内为查找对象的路径格式为:(“游戏物体1/游戏物体2”)

 

 

GameObject .Find("xxx");

//("")内为要查找到游戏物体的名称,若有多个重复名的游戏物体则会返回第一个

//根据全局搜索,较耗费性能

 

 

根据标签查找:

GameObject.FindWitchTag("xxx");

 

[展开全文]

禁用组件:

BoxCollider collider = Player.GetComponent<BoxCollider>();
 collider.enabled =false;

 

被禁用的组件方法依然可以使用

 

 

访问组件中的属性;

Rigidbody rgd = Player.GetComponent<Rigidbody>();
 rgd.mass = 100;

[展开全文]

访问自身组件:

GetComponent<Transform>();

//<>内为要访问的组件类型

 

GetComponents<collider>();

//<collider>获取所有碰撞器

 

获取子物体身上的组件:

游戏物体名字.GetCompnent<要获取的对象身上的子物体名字>();

[展开全文]

foreach(transform xxx in 数组名)

{

 

}

//xxx代表数组里的每一个元素

//foreach循环体会执行多次,执行一次的时候xxx就代表其中一个元素

 

只是遍历某个数组可用foreach循环

 

        foreach(Transform t in children)
        {
            if (t != transform)
            {
                Destroy(t.gameObject);
            }
        }

[展开全文]

利用循环销毁物体和子物体:

for循环:

Transform[] xxxx = transform.GetComponentsInChildren<Transform>();

//定义一个内容为该游戏物体所有组件的数组

for(int i=0;i<children.length;i++)

{

if(children[i] !=transoferm)

{

GameObject.Destroy(children[i].gameobject);

}

}

//销毁游戏物体的子物体

 

 

利用while循环:

        int i = 0;
        while (i < children.Length)
        {
            if(children[i] != transform)
            {
                GameObject.Destroy(children[i].gameObject);
            }
            i++;
        }

 

 

do while循环:

do

{

//循环体

}

while(//循环条件)

//先执行循环体在判断满足条件,若满足则再次执行循环体

        int i = 0;
        do
        {
            if (children[i] != transform)
            {
                GameObject.Destroy(children[i].gameObject);
            }
            i++;
        }
        while(i<children.Length);

 

 

[展开全文]

switch case语法

 

switch(heroType)

{

case 1:

//在这里书写若()条件满足时执行的代码

        break;

case 2:

//在这里书写若()条件满足时执行的代码

        break;

case 3:

//在这里书写若()条件满足时执行的代码

        break;

default:

//在这里书写若()条件不满足时执行的代码

        break;

}

//default为默认情况,当上述情况不满足时则执行default语句

//default语句可不添加,case可有多个

 

 

变形:

switch(heroType)

{

case HeroType.soldier:

case HeroType.master:

print("战士发动技能");

print("法师发动技能");

        break;

//若heroType等于HeroType.soldier或等于HeroType.master执行

print("战士发动技能");

print("法师发动技能");

 

 

 

 

[展开全文]

if变形:处理多种情况(可添加多个else if)

只会执行其中一种分支,若满足其中一个则后续不再做判断

格式:

if()

{

 

}

else if()

{

 

}

 

 

[展开全文]

逻辑或运算符||:||左右两边吧任意一个为true则返回true

 

 

[展开全文]

类名定义时可使用下划线 _

 

 

运算符:

数学运算符:

+ - * / %

 

 

赋值:

= += -= /= %=

a+=b ==> a=a+b

 

 

比较运算符:

> >= < <= == !=

// !=为不等于

 

 

逻辑运算符:

&& || !

//&&逻辑与 ||逻辑或 !取反

//&&左右两边都为true时才输出true

 

//针对bool类型运算

 

//!用于取反

用法:!true或!false

也可以把变量取反

[展开全文]

在类中声明变量:

public int hp;

//可在hp后添加=数字,修改默认值,默认值初始为0

 

inspector上的值以第一次初始化的值为准

 

脚本中的初始值和inspector中的初始值冲突时以inspectior中的初始值为准

 

public与private,private在inspectior面板上不显示,public则显示且可在inspectior面板上更改参数

 

GameObject类型的变量可以赋值游戏物体

 

c#中称为字段

 

为声明为public或private时默认为private 

 

public或private是访问修饰符

[展开全文]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//命名空间,灰色的为未使用,不同命名空间里有不同类,若要使用则要先引用该命名空间

 

public class player : MonoBehaviour
{

//palyer为类的名字,要和文件名保持一致
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
 

定义命名空间;

namespace xxx

{

 

}

 

要使用命名空间的类需要引用,格式为
using 命名空间名字

[展开全文]

注释

注释不会运行

注释可以写在代码后面

{}前面不能有//、

//后面代表单行注释及只对//后起作用

  1. 多行注释可以用/*

 

 

                       */来表示。(这里面随便些什么都可以,只要不超过这个范围即可)

单行注释可以放在程序的任意地方,只要不

 

 

[展开全文]

类中可包含方法(类可以进行的功能)

[展开全文]

利用类声明的变量称之为对象

Enemy enemy = new Enemy();

//new Enemy()构造对象

未构造的对象无法使用

 

public class LearnCsharpClass : MonoBehaviour
{
    private void Start()
    {
        Enemy enemy1 = new Enemy();
    }
}

class Enemy
{
    string name;
    string hp;
}

若要访问对象的属性则要将string name;改为public string name;

public字段踩可以通过对象访问

 

string默认数值为null

int默认值为0

 

修改sting name;

enmey1.name = "叔叔"

print(enemy1.name);

输出结果为叔叔

 

字符组拼:使用+“-”+拼接

字符串+“-”+字符串

eg;

print(enemy1.name+"-"+enemy2.name)

 

 

[展开全文]

类class:

类与类之间可以继承

eg:

public class LearnCsharpClass:MonoBehaviour
{

}

表示LearnCsharpClass继承自MonoBehaviour

 

定义:

class Enemy //Enemy为类名字,自己定义

{

string name; //字段,末尾需要加分号

}

 

类的声明:

Enemy enemy;

类的创建:

Enemy enemy = new Enemy();

[展开全文]

if语句:

if(逻辑表达式)

{

 

}

若()内条件满足则运行{}内代码

eg;

hp = 0;

if(hp<=0)

{

print(“you die”)

}

输出结果为you die

 

 

if else语句:

if()

{

 

}

else

{

 

}

若满足if()内的条件则执行if语句中{}的代码,若不满足条件则执行else{}中的代码

[展开全文]
意殇 · 2022-05-23 · 113-if语句 0

float xxx = 数字.数字f;

float类型赋值时需要在数后加f(小数默认类型为double,无法直接赋值给float类型,需要在末尾加f)

 

double类型浮点精度更高(小数点后位数更多)

[展开全文]

方法中的返回值:

return

 

统一方法内不能定义相同名字的变量

 

在方法1内部声明的变量无法在直接在外部使用

eg:

void strat()

{

void add(int a, int b)

{

int res = a + b;

}

print(res);

}

无法这样使用,因为res为add内声明的变量无法在外部(start方法内)使用

 

使用返回值:

void strat()

{

int add(int a, int b)

//add前的int为返回值类型

{

int res = a + b;

return res;

}

print(res);

int res = add(10,20)

//需要定义一个参数来接收返回值,之所以可以用res作为参数是因为位于不同方法中

print(res);

}

输出结果为30

 

需要指定返回值类型

 

返回值可以为空(void)

一个方法只能有一个返回值

返回值类型要和return值要匹配

[展开全文]

参数定义:

void createnemy(参数类型 名字,参数类型 名字)

{

print("xxxxxx"+名字)

}

 

调用:

createnemy(new 参数类型(数字,数字,数字));

 

作用:控制方法里的变化,例如设置敌人位置血量等

[展开全文]

枚举类型用于定义与类型有关的东西

定义(在class外):

enum 枚举类型名字

{

取值,

取值,

取值,

}

 

使用枚举类型声明变量:

枚举类型名字 xxx = 枚举类型名字.要调用的取值

[展开全文]

授课教师

SiKi学院老师

课程特色

下载资料(2)
视频(37)