返回介绍

GameObject.FindGameObjectsWithTag 通过标签查找游戏对象列表

发布于 2019-12-18 15:37:42 字数 4515 浏览 1267 评论 0 收藏 0

JavaScript => static function FindGameObjectsWithTag(tag: string): GameObject[];
C# => static GameObject[] FindGameObjectsWithTag(string tag);

Parameters 参数

tagThe name of the tag to search GameObjects for.
用于搜索对象标签的名称

Description 描述

Returns a list of active GameObjects tagged /tag/. Returns empty array if no GameObject was found.

返回具体tag标签的激活的游戏对象列表,如果没有找到则为空。

Tags must be declared in the tag manager before using them. A UnityException will be thrown if the tag does not exist or an empty string or null is passed as the tag.

标签必须在使用之前到标签管理器里面声明。如果标签不存在或为空字符串或传递null作为标签,将抛出Unity异常。

JavaScript:

// Instantiates respawnPrefab at the location 
// of all game objects tagged "Respawn".
 
var respawnPrefab : GameObject; 
 
var respawns; function Start() 
{ 
	if (respawns == null) 
		respawns = GameObject.FindGameObjectsWithTag ("Respawn"); 
	for (var respawn in respawns) 
		Instantiate (respawnPrefab, respawn.transform.position, respawn.transform.rotation); 
} 

C#:

using UnityEngine;
using System.Collections;
 
public class ExampleClass : MonoBehaviour {
    public GameObject respawnPrefab;
    public Object respawns;
    void Start() {
        if (respawns == null)
            respawns = GameObject.FindGameObjectsWithTag("Respawn");
 
        foreach (Object respawn in respawns) {
            Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation) as GameObject;
        }
    }
}

Another example:

另一个例子:

JavaScript:

// Print the name of the closest enemy
print(FindClosestEnemy().name); 
 
// Find the name of the closest enemy
function FindClosestEnemy () : GameObject {
	// Find all game objects with tag Enemy
	var gos : GameObject[];
	gos = GameObject.FindGameObjectsWithTag("Enemy"); 
	var closest : GameObject; 
	var distance = Mathf.Infinity; 
	var position = transform.position; 
	// Iterate through them and find the closest one
	for (var go : GameObject in gos)  { 
		var diff = (go.transform.position - position);
		var curDistance = diff.sqrMagnitude; 
		if (curDistance < distance) { 
			closest = go; 
			distance = curDistance; 
		} 
	} 
	return closest;	
}

C#:

using UnityEngine;
using System.Collections;
 
public class ExampleClass : MonoBehaviour {
    GameObject FindClosestEnemy() {
        GameObject[] gos;
        gos = GameObject.FindGameObjectsWithTag("Enemy");
        GameObject closest;
        float distance = Mathf.Infinity;
        Vector3 position = transform.position;
        foreach (GameObject go in gos) {
            Vector3 diff = go.transform.position - position;
            float curDistance = diff.sqrMagnitude;
            if (curDistance < distance) {
                closest = go;
                distance = curDistance;
            }
        }
        return closest;
    }
    void Example() {
        print(FindClosestEnemy().name);
    }
}

Another example, testing for empty array:

又一个例子,测试空数组:

JavaScript:

// Search for game objects with a tag that is not used
 
function Start () 
{ 
	var gos : GameObject[]; 
	gos = GameObject.FindGameObjectsWithTag("fred"); 
	if (gos.length == 0) 
	{ 
		Debug.Log("No game objects are tagged with fred"); 
	} 
} 

C#:

using UnityEngine;
using System.Collections;
 
public class ExampleClass : MonoBehaviour {
 
	void Start () {
 
		GameObject[] gos; 
			gos = GameObject.FindGameObjectsWithTag("fred"); 
			if (gos.Length == 0) 
			{ 
				Debug.Log("No game objects are tagged with fred"); 
			} 
 
	}
}

GameObject

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文