繁体   English   中英

根据统一的变换找到游戏对象

[英]Find a gameobject base on its transform in unity

我有一个transform ,想要找到具有该transformgameObject

例如,我将如何找到gameObject

Vector3 myTransform = new Vector3(33,12,0);

获取场景中的所有变换,然后遍历所有这些transform.position ,检查其transform.position是否等于您想要的transform.position

Vector3 myVector = new Vector3(33,12,0);
Transform myTransform;
void start()
{
    Transform[] allTransforms = GameObject.FindObjectsOfType(typeof(Transform)) as Transform[];
    foreach (transform someTransform in allTransforms)
    {
        if(someTransform.position != myVector)
            continue;

        myTransform = someTransform;
        break;
    }
}

您可以创建一个自定义类来实现

using System;
using System.Globalization;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Vector3> vector3 = new List<Vector3>();
            Vector3 myTransform = new Vector3(33, 12, 0);
            vector3.Add(myTransform);

            Vector3 results = vector3.Find(x => x == myTransform);
        }
     }
    public class Vector3 : IEqualityComparer<Vector3>
    {
        public int x { get; set; }
        public int y { get; set; }
        public int z { get; set; }

        public Vector3(int x, int y, int z)
        {
            this.x = x;
            this.y = y;
            this.z = z;
        }
        public Boolean Equals(Vector3 a, Vector3 b)
        {
            return a == b;
        }
        public int GetHashCode(Vector3 vector3)
        {
            return (vector3.x.ToString() + "^" + vector3.y.ToString() + "^" + vector3.z.ToString()).GetHashCode();
        }


    }







}

我平等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM