C#/ Unity3d - 将对象类型作为参数传递

时间:2016-06-18 09:53:48

标签: c# generics unity3d parameter-passing overloading

我有一个带有几个重载的方法,因为预期会有不同的对象类型(list vs array和GameObject vs ParticleSystem):

void ObjectLoop(int uBound, List<GameObject> list, GameObject item, bool projectile, int decalNo = 0, int typeNo = 0)
{
    for (int x = 0; x < uBound; x++)
    {
        list.Add(Instantiate(item) as GameObject);
        list[x].transform.SetParent(this.transform);
        list[x].SetActive(false);
        if (projectile)
        {
            projScript = list[x].GetComponent<J_Projectile>();
            projScript.decalType = decalNo;
            projScript.hitType = typeNo;
        }
    }
}

void ObjectLoop(int uBound, List<ParticleSystem> list, ParticleSystem item)
{
    for (int x = 0; x < uBound; x++)
    {
        list.Add(Instantiate(item) as ParticleSystem);
        list[x].transform.SetParent(this.transform);
        list[x].gameObject.SetActive(false);
    }
}

void ObjectLoop(int uBound, GameObject[] list, GameObject item)
{
    for (int x = 0; x < uBound; x++)
    {
        list[x] = (Instantiate(fireHazard) as GameObject);
        list[x].transform.SetParent(this.transform);
        list[x].SetActive(false);
    }
}

有没有办法将这些方法压缩成单个方法,可能是通过传递列表或数组的对象类型以及GameObject或ParticleSystem?我猜它与仿制药有关,但我不能完全理解它,所以欢迎对假人的解释:)

由于

1 个答案:

答案 0 :(得分:0)

你似乎有一个奇怪的用法。你可能想看看你到底想要做什么。也就是说,这是一个应该有效的通用方法扩展:

(1/R,cx,cy,cz)

用法:

v(x = (x'-cx)/R, y = (y'-cy)/R, z = (z'-cz)/R);