从游戏对象中获取脚本名称

时间:2016-01-29 07:52:57

标签: c# unity3d

我有一个游戏对象附有两个脚本。我想从第一个脚本获取第二个脚本的名称。 的记住

  1. 我不想直接分配(我非常清楚)。
  2. 第一个脚本名称不能硬编码,因为它会改变。
  3. 结果 y,我想获取脚本名称并设置该脚本属性?

2 个答案:

答案 0 :(得分:8)

我不确定你是什么意思“我想从第一个脚本中获取第二个脚本的名称”,但请看一下:

enter image description here

我必须将脚本附加到Main Camera gameObject。

以下是Test.cs的代码:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour 
{

    void Start()
    {
        MonoBehaviour[] scripts = this.GetComponents<MonoBehaviour> ();

        foreach (MonoBehaviour mb in scripts)
        {
            Debug.Log (mb.GetType ().Name);
        }
    }
}

一开始,它会在其上打印所有MonoBehaviour的名称:

enter image description here

答案 1 :(得分:1)

虽然不是直截了当,但却是一种相当简单的方法,可以满足您的需求。

由于AddComponent不再接受字符串(文档另有说明,但我认为它是因为Unity还没有更新它),你可以做的是

  1. 使用Type
  2. 获取Type.GetType
  3. 使用AddComponent(System.Type)
  4. 以下代码

    var type = Type.GetType("SomeClassName");
    gameObject.AddComponent(type);