网页浏览总次数

星期一, 三月 04, 2024

Unity常用API方法和类(带代码)-2(GameObject,MonoBehaviour)


 GameObject游戏物体相关

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class No3_GameObject : MonoBehaviour

{

    public GameObject go;

 

    void Start()

    {

        //创建GO

        //1.使用构造函数(声明+实例化)创建空的GO方法

        GameObject go1 = new GameObject();

        GameObject go2 = new GameObject("自定义名称的GO");

        //2.根据Prefab或场景中的游戏物体来实例化

        GameObject go3 = Instantiate(go);

        //3.使用特别API创建一些基本的游戏物体类型

        GameObject.CreatePrimitive(PrimitiveType.Cube);

        //获取和查找GO,使用GO的方法和变量

        Debug.Log(this);//this 表示当前组件

        Debug.Log(this.gameObject);//组件挂载的GO

        gameObject.SetActive(false);//失活 激活GO

        Debug.Log(gameObject.activeInHierarchy);//当前GO的激活状态

        Debug.Log(gameObject.activeSelf);//当前GO的激活状态

        Debug.Log(gameObject.tag);//当前GO的tag

        Debug.Log(gameObject.layer);//当前GO的层级

        //查找一个GO,被查找的GO需要是激活状态

        GameObject.Find("Main Camera");//通过名称查找GO

        GameObject.FindGameObjectWithTag("MainCamera");//通过tag查找一个GO

        GameObject.FindGameObjectsWithTag("MainCamera");//通过tag查找一组GO

        Camera camera= GameObject.FindObjectOfType<Camera>();//通过组件类型查找具体类型

        //查找一组GO,被查找的GO都需要是激活状态

        GameObject[] testGOArray = GameObject.FindGameObjectsWithTag("TestTag");

        foreach (GameObject go in testGOArray)

        {

            Debug.Log(go.name);

        }

        Debug.Log("--------------------------------------");

        BoxCollider[] testGOArray2 = GameObject.FindObjectsOfType<BoxCollider>();

        foreach (BoxCollider b in testGOArray2)

        {

            Debug.Log(b.gameObject.name);

        }

    }

}

 

 

MonoBehaviour基类

 

//MonoBehaviour派生自Component,所以拥有Component的公有,保护的属性,成员变量,方法等功能

//MonoBehaviour的父类是Behaviour,Behaviour的父类是Component

//挂载脚本到GameObject上 是Componet功能,所以MonoBehaviour也有这个功能Debug.Log(this.isActiveAndEnabled);//激活并且启动了该脚本


没有评论:

发表评论