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

完成于2017-11-06

价格 免费

获取GameObject

1.先定义 拖拽 物体或者组件

2.transform.Find("子路径")

3.GameObject.Find("物体名称")  全局查找

4.GameObject.FindWithTag("标签名称")  标签查找

 

[展开全文]

1. 通过GetComponentInChildren<组件类名>()可以获取子物体中第一个符合的组件

[展开全文]

1. 禁用组件只是引擎不会再调用其生命周期相关方法了,用户还可以手动代码调用

[展开全文]

获取游戏物体:

拖拽赋值,要求前后一致

 

 

获取游戏物体的子物体:

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