Unity简单操作:Unity中添加组件的几种方法

81 篇文章 1 订阅
22 篇文章 1 订阅

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

二、在脚本中利用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<</span>PlayerManager>()){
                player.AddComponent<</span>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.

using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    public SphereCollider sc;
    void Example() {
        gameObject.AddComponent("FoobarScript");
        sc = gameObject.AddComponent("SphereCollider") as SphereCollider;
    }
}

Component AddComponent(Type componentType);

Description

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

no example available in C#

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意思是表面这个类一定需要哪些组件,如果目前这些组件没有被加上,就自动加上。

代码是这么写的但是编译完后发现没增加组件,

为啥呢……

把拖到GameObject上的脚本删了然后在拖上就有了。

原来这个是只有第一次被拖上时候才会增加组件,相当于依赖关系,如果组件上没有就自动添加,如果有的话不会重复添加

官方解释:

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.

// Mark the PlayerScript as requiring a rigidbody in the game object.
@script RequireComponent(Rigidbody)

function FixedUpdate() {
        rigidbody.AddForce(Vector3.up);
}
C# Example:

[RequireComponent (typeof (Rigidbody))]
public class PlayerScript : MonoBehaviour {
        void FixedUpdate()  {
                rigidbody.AddForce(Vector3.up);
        }
}

第四种:

wheelCol.AddComponent(typeof(WheelCollider));//这个旧的,如下官方说明

新的通用方案是:

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AD_喵了个咪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值