我为程序立方体编写了一个脚本。基本上我想建造一个宽度,长度和高度我可以通过参数控制的建筑物。因此,通过改变参数,我可以制作不同的形状,如窗户,门和屋顶等等。但我不知道该怎么做。如何将这个脚本重用于不同的形状?
constructor(props){
super(props);
this.state = {
load: '',
projectInfo:{
"projects":[]
}
};
this.handleClick = this.handleClick.bind(this);
}
答案 0 :(得分:1)
你需要使用继承 像这样制作一个类Cube:
public class Cube:MonoBehaviour{
}
然后制作这样的其他类:
public class Door:Cube{
}
您可以在此处获取更多详细信息:https://unity3d.com/learn/tutorials/topics/scripting/inheritance
答案 1 :(得分:1)
您不需要从头开始编辑场景中的立方体或其他元素的尺寸。 Unity已经提供了一些你可以在你的游戏中实例化的原语,并从你的脚本中访问它们的属性来修改它们的值。
如果您想使用带有基元的游戏对象(如立方体,球体......)或自定义游戏对象(如您在Blender上创建的3D模型)以编程方式创建环境,则可以执行以下操作:
//You will need to pass in the inspector a GameObject as parameter in the correct field
public GameObject customGameObject;
void Start()
{
generateEnviroment()
}
void generateEnviroment()
{
//You instantiate a GameObject of type cube
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
//You change its position
cube.transform.position = new Vector3(0, 0.5F, 0);
// Widen the object by 0.1
cube.transform.localScale += new Vector3(0.1F, 0, 0);
//Change material properties, assuming it has a material component
Renderer rend = cube.GetComponent<Renderer>();
rend.material.shader = Shader.Find("Specular");
rend.material.SetColor("_SpecColor", Color.red);
//In case you want to add other type of GameObject, like a car or sth you have created:
GameObject myGameObject = GameObject.Instantiate (customGameObject);
}
你可以根据需要设置复杂功能,只需对名称进行整理即可。
https://docs.unity3d.com/ScriptReference/GameObject.CreatePrimitive.html