C# 在运行时添加/删除组件
我正在用脚本(c#)创建一个多维数据集。我想删除BoxCollider,因为我正在开发一个2D游戏,并通过BoxCollider2d进行交换。然后我想添加一个RigiBody2D并在我的世界中显示立方体。问题是我总是得到错误: 无法将组件“BoxCollidater2D”添加到多维数据集,因为它与 现有的“BoxCollider”派生组件! 游戏对象:AddComponent() CreateCube:OnCollisionInter2D(碰撞2D)(位于 Assets/Scripts/CreateCube.cs:15) 我得到了这个错误,但代码仍然有效。但它只会一直持续到线被破坏(立方体碰撞器);就这样!BoxCollider被正确地移除,因为当我查看创建的对象时,它不见了。我真的不知道为什么编译器告诉我有一个现有的BoxColliderC# 在运行时添加/删除组件,c#,unity3d,C#,Unity3d,我正在用脚本(c#)创建一个多维数据集。我想删除BoxCollider,因为我正在开发一个2D游戏,并通过BoxCollider2d进行交换。然后我想添加一个RigiBody2D并在我的世界中显示立方体。问题是我总是得到错误: 无法将组件“BoxCollidater2D”添加到多维数据集,因为它与 现有的“BoxCollider”派生组件! 游戏对象:AddComponent() CreateCube:OnCollisionInter2D(碰撞2D)(位于 Assets/Scripts/Crea
using UnityEngine;
using System.Collections;
public class CreateCube : MonoBehaviour
{
void OnCollisionEnter2D(Collision2D coll)
{
// Create Cube
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
// Destroy BoxCollider
Destroy(cube.collider);
// Add BoxCollider2D
cube.AddComponent<BoxCollider2D>();
// Add RigiBody2D
cube.AddComponent<Rigidbody2D>();
// Show Cube in World
cube.transform.position = new Vector3(0, 0.5f, 0);
}
}
使用UnityEngine;
使用系统集合;
公共类CreateCube:单行为
{
空心OnCollisionInter2D(碰撞2D coll)
{
//创建多维数据集
GameObject cube=GameObject.CreatePrimitive(PrimitiveType.cube);
//电子对撞机
销毁(立方体对撞机);
//添加r2d
AddComponent();
//添加RigiBody2D
AddComponent();
//在世界上展示立方体
cube.transform.position=新矢量3(0,0.5f,0);
}
}
有人有什么想法吗?
Destroy
将始终等到当前更新
循环之后删除组件,因此添加框collider2d
时不会删除碰撞器。改用destrominate
不过,我建议您创建一个带有所需内容的预置
,并使用实例化
。像这样:
// Create Cube
GameObject cube = Instantiate(yourPrefab, new Vector(0, 0.5f, 0), Quaternion.identidy) as GameObject;
你可能不应该创建一个立方体原语,而应该创建一个2D精灵。这是一篇1年前的文章,我不知道为什么它会在列表中出现得这么早。但我的回答可能会帮助另一个人:P