Unity—常用API(重点)

利用将近两天的时间学习并整理了常用API的知识点!

每日一句:能打动人的从来不是花言巧语,而是恰到好处的温柔以及真挚的内心

目录

脚本生命周期流程图(续上)

常用API

核心类图

*Component类

​编辑

*Transform类

练习:在层级未知情况下查找子物体(递归)

*GameObject类

​编辑

*Object类

练习:查找血量最低的敌人且改变颜色

Unity User Manual 2021.3 (LTS) - Unity 手册https://docs.unity.cn/cn/current/Manual/index.html


脚本生命周期流程图(续上)

 

 

 

常用API

核心类图

 

*Component类

Component类提供了查找(在当前物体、后代、先辈)组件的功能

//获取当前物体所有组件

var allComponent=this.GetComponents<Component>();

foreach (var item in allComponent)

{Debug,Log(item.GetType();}

//获取后代物体的指定类型组件(从自身开始)

this.GetComponentsInChildren<MeshRenderer>().material.color;

//获取先辈物体的指定类型组件(从自身开始)

this.GetComponentsInParent<MeshRenderer>().material.color;

 

 

 

 

*Transform类

Transform类提供了查找(父、根、子[根据索引和名称])变换组件、改变位置、角度、大小的功能;

//child为每个子物体的变换组件

foreach(Transform child in this.transform)

//物体相对于世界坐标系原点的位置

this.transform.position

//物体相对于父物体轴心点的位置

this.transform.localposition

//相对于父物体缩放比例

this.transform.localScale

//理解为:物体与模型缩放比例(自身缩放比例*父物体缩放比例)

this.transform.lossyScale

如:父物体localScale为2,当前物体localScale为3,则lossyScale为6

//向自身坐标系Z轴移动1m

this.transform.Translate(0,0,1);

//向世界坐标系Z轴移动1m

this.transform.Translate(0,0,1,space.World);

//向自身坐标系Z轴旋转1度

this.transform.Rotate(0,0,1);

//向世界坐标系Z轴旋转1度

this.transform.Rotate(0,0,1,space.World);

//围绕旋转

this.transform.RotateAround(Vector3.zero,Vector3.up[y轴],1);

//获取根物体变换组件

this.transform.root;

//获取父物体变换组件

this.transform.parent;

//设置父物体

public Transform TF;

public transform.SetParent(TF,(ture)[默认世界坐标]/false[自身坐标]);

 

(ture世界坐标,false自身坐标(自身的坐标就是与cube5的距离))

//根据名称获取子物体

Transform childTF=this.transform.Find(“子物体名称”);

//根据索引获取子物体

For(int i=0;i<count;i++)

{Transform childTF=this.transform.GetChild(i);}

 

 

 

 

 

练习:在层级未知情况下查找子物体(递归)

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class TransformHelper : MonoBehaviour

{

    private void OnGUI()

    {

        if (GUILayout.Button("层级未知,查找子物体"))

        {

            var childTF = TransformHelper.GetChild(this.transform,"Cube (5)");

            childTF.GetComponent<MeshRenderer>().material.color = Color.red;

        }

    }

            /// <summary>

            /// 在层级未知情况下查找子物体

            /// </summary>

            /// <param name="parentTF">父物体变换组件</param>

            /// <param name="childName">子物体名称</param>

            /// <returns></returns>

    public static Transform GetChild(Transform parentTF,string childName)

    {

        //在子物体中查找

        Transform childTF = parentTF.Find(childName);

        if(childTF!=null)return childTF;

        //将问题交由子物体

        int count = parentTF.childCount;

        {

            for(int i=0;i<count;i++)

            {

                childTF = GetChild(parentTF.GetChild(i), childName);

                if (childTF != null)

                    return childTF;
            }

        }

        return null;

    }

    

}

 (效果图)

*GameObject类

//在场景中物体激活状态(物体实际激活状态)

this.gameObject.activeInHierarchy

//物体自身激活状态(物体在Inspector面板中的状态)

this.gameObject.activeSelf;

 

(activeInHierarchy——false,activeSelf——ture)

//设置物体启用/禁用

this.gameObject.SetActive(ture/false);

//创建物体

GameObject lightGO=new GameObject();

//添加组件

Light light=lightGO.AddComponent<Light>();

light.color=Color.red;

light.type=LightType.Point;

//在场景中根据名称查找物体(不建议使用)

GameObject.Find(“游戏对象名称”);

//获取所有使用该标签的物体

GameObject[]allEnemy=GameObject.FindGameObjectsWithTag(“标签”);

//获取使用该标签的物体(单个)

GameObject player=GameObject.FindWithTag(“标签”);

 

 

 

*Object类

Destory 删除一个游戏对象、组件或资源

//加载新场景时,使目标对象不被自动销毁

DontDestoryOnLoad(transform.gameObject);

//根据类型查找对象

Object.FindObjectOfType<  >();

练习:查找血量最低的敌人且改变颜色

HP实例成员挂在物体中,就是一实例变量

 

找Enemy类型的对象,把所有对象的引用放在一个数组里

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Enemy : MonoBehaviour

{

    public float HP;

}
using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class FindEnemyDome : MonoBehaviour

{

    private void OnGUI()

    {

        if(GUILayout.Button("查找血量最低的敌人"))

        {

            //查找场景中所有Enemy类型的引用

            Enemy[] allEnemy= Object.FindObjectsOfType<Enemy>();

            //获取血量最低的对象引用

            Enemy min = FindEnemyByMinHP(allEnemy);

            //根据Enemy类型引用,获取其他组件类型引用

            min.GetComponent<MeshRenderer>().material.color = Color.red;

        }

    }

    public Enemy FindEnemyByMinHP(Enemy[] allEnemy)

    {

        //假设第一个就是血量最低的敌人

        Enemy min = allEnemy[0];

        //依次与后边比较

        for(int i=1;i<allEnemy.Length;i++)

        {

            if(min.HP>allEnemy[i].HP)

            {

                min = allEnemy[i];//替换成当前的引用,不要加HP改属性值了

            }

        }

        return min;

    }

}

Time类

 

 

一定要经常翻看UNITY文档呦!

Unity User Manual 2021.3 (LTS) - Unity 手册icon-default.png?t=M666https://docs.unity.cn/cn/current/Manual/index.html

Unity3D中常用API包括Component、Transform、GameObject、Object和Time等。\[1\]这些API可以用于处理游戏对象的组件、变换、实例化和销毁等操作。例如,可以使用Component来获取和管理游戏对象的组件,使用Transform来控制游戏对象的位置、旋转和缩放,使用GameObject来创建、查找和销毁游戏对象,使用Object来处理资源的加载和释放,使用Time来获取游戏的时间信息。此外,还有一些常见的API函数,如Instantiate函数用于实例化预制件,Start函数和Update函数用于处理游戏对象的初始化和更新等。\[2\]\[3\]这些API和函数是Unity开发中经常使用的工具,可以帮助开发者实现各种功能和效果。 #### 引用[.reference_title] - *1* [Unity3D数字孪生笔记——Unity常用API篇](https://blog.csdn.net/Lcl_huolitianji/article/details/120875486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Unity3D常用API](https://blog.csdn.net/u011360242/article/details/77046732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)](https://blog.csdn.net/jiebaoshayebuhui/article/details/128510864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值