Unity中添加组件的几种方法

来源:互联网 发布:加拿大订酒店软件 编辑:程序博客网 时间:2024/04/24 18:51

一、在编辑器上面添加一个组件。这个不用多说。


二、在脚本中利用AddComponent函数添加一个组件,例如:

using UnityEngine;
using System.Collections;

public class CharacterSpawner : MonoBehaviour {

    public void Spawn(GameObject CharacterSlected){
        if(CharacterSlected){
            GameObject player = (GameObject)GameObject.Instantiate(CharacterSlected,this.transform.position,Quaternion.identity);
            if(!player.GetComponent<PlayerManager>()){
                player.AddComponent<PlayerManager>();
            }
        }
    }
}


AddComponent的官方说明:

GameObject.AddComponent

Component AddComponent(string className);
Description

Adds a component class named className to the game object.

Use this function to change behaviour of objects on the fly. You can also add script to game objects by passing in the name of the script class.

Some components require other components to exist in the same game object as well. This function automatically adds any required components as well eg. if you add a HingeJoint this will automatically add a Rigidbody as well.
<em>using UnityEngine;using System.Collections;public class Example : <a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/MonoBehaviour.html" style="color: rgb(20, 93, 123); text-decoration: none;">MonoBehaviour</a> {    public <a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/SphereCollider.html" style="color: rgb(20, 93, 123); text-decoration: none;">SphereCollider</a> sc;    void Example() {        gameObject.AddComponent("FoobarScript");        sc = gameObject.AddComponent("<a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/SphereCollider.html" style="color: rgb(20, 93, 123); text-decoration: none;">SphereCollider</a>") as <a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/SphereCollider.html" style="color: rgb(20, 93, 123); text-decoration: none;">SphereCollider</a>;    }}</em>
Component AddComponent(Type componentType);
Description

Adds a component class of type componentType to the game object. C# Users can use a generic version.

<em>no example available in C#</em>
Note that there is no RemoveComponent(), to remove a component, use Object.Destroy.

三、利用RequireComponent添加一个组件。

using UnityEngine;
using System.Collections;
[RequireComponent(typeof(PlayerCharacterController))]
[RequireComponent(typeof(PlayerCharacterUI))]
[RequireComponent(typeof(PlayerQuestManager))]
[RequireComponent(typeof(PlayerSave))]

public class PlayerManager : MonoBehaviour {

}


RequireComponent意思是表面这个类一定需要哪些组件,如果目前这些组件没有被加上,就自动加上。

官方解释:


RequireComponentNamespace: UnityEngine

Description

The RequireComponent attribute lets automatically add required component as a dependency.

When you add a script which uses RequireComponent, the required component will automatically be added to the game object. This is useful to avoid setup errors. For example a script might require that a rigid body is always added to the same game object. Using RequireComponent this will be done automatically, thus you can never get the setup wrong.
<em>// Mark the PlayerScript as requiring a rigidbody in the game object.@script <a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/RequireComponent.html" style="color: rgb(20, 93, 123); text-decoration: none;">RequireComponent</a>(<a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/Rigidbody.html" style="color: rgb(20, 93, 123); text-decoration: none;">Rigidbody</a>)</em><p class="basic" style="margin-top: 0px; margin-bottom: 1.5em; padding-top: 0px; padding-bottom: 0px; font-family: Helvetica, Arial, sans-serif; color: rgb(68, 68, 68);"></p><em>function FixedUpdate() {rigidbody.AddForce(<a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/Vector3-up.html" style="color: rgb(20, 93, 123); text-decoration: none;">Vector3.up</a>);}</em>
C# Example:
<em>[<a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/RequireComponent.html" style="color: rgb(20, 93, 123); text-decoration: none;">RequireComponent</a> (typeof (<a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/Rigidbody.html" style="color: rgb(20, 93, 123); text-decoration: none;">Rigidbody</a>))]public class PlayerScript : <a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/MonoBehaviour.html" style="color: rgb(20, 93, 123); text-decoration: none;">MonoBehaviour</a> {void FixedUpdate()  {rigidbody.AddForce(<a target=_blank target="_blank" href="http://blog.csdn.net/monzart7an/article/details/Vector3-up.html" style="color: rgb(20, 93, 123); text-decoration: none;">Vector3.up</a>);}}</em>

0 0