zoukankan      html  css  js  c++  java
  • Unity3D基础--动态创建和设置游戏对象

    转载自原文:http://m.blog.csdn.net/blog/smbroe/43488627

    1.如何动态创建对象:调用GameObjectCreatePrimitive方法可以按模型进行创建,PrimitiveType中可选的模型有,Cube(立方体),Sphere(球体),Capsule(胶囊),Plane(平原),Cylinder(圆柱);创建出的对象不需要Add之类的就可以显示出来

    GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
    cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);<span style="font-family:宋体;">//指定游戏对象的位置

    2.动态添加组件:通过AddComponent<Rigidbody>();可以为一个GameObject对象添加一个刚体组件,其中Rigidbody表示刚体,我们可以通过更改这个类型来为其添加不同的组件。当我们添加刚体组件后可以获得GameObject的rigidbody对象并对刚体进行设置

    cubeObject.AddComponent<Rigidbody>();//为游戏对象添加刚体组件
    cubeObject.rigidbody.mass = 0.5f;//设置刚体密度,默认为1
    cubeObject.rigidbody.AddForce(Vector3.forward *100);//为其施加向前的力

    3.动态添加脚本:可以通过AddComponent方法并传入一个string类型对象(表示脚本的名称)来为GameObject对象动态添加脚本。

    cubeObject.AddComponent("AutoDestory");//添加脚本文件AutoDestory

    4.动态销毁对象:Destroy(cubeObject)是立即销毁游戏对象,Destroy(cubeObject,1)是延迟一秒销毁游戏对象

    5.动态销毁脚本:Destroy(cubeObject.GetComponent(“AutoDestory))销毁cubeObject对象上附加的脚。

    6.一般我们在游戏对象不可见时会销毁或停止其动作,在其被摄像同捕捉到可见时执行其动作,这样我们可以复写其中的OnBecameInvisible方法(当游戏对象不可见时被执行),OnBecameVisible方法(当游戏对象可见时被执行)来达到上述效果。

    using UnityEngine;
    using System.Collections;
    
    //当游戏对象不可见时销毁
    public class AutoDestory  :  MonoBehaviour
    {
        
        void OnBecameInvisible(){
            Destroy (this.gameObject);
        }
    }

    7.复制对象:在游戏中有时相同的对象会用到很多次,例如大量的子弹发射,如果利用复制对象的方法可以提高效率。调用GameObjectInstantiate方法返回一个Object对象进行强转可以得到复制的对象。

    GameObject cubeClone = (GameObject) GameObject.Instantiate(cubeObject);

    8.动态设置游戏对象的材质,为游戏对象添加贴图:我们可以通过cubeObject.renderer.material获得游戏对象的材质,并对其赋值即可,一般我们可以声明一个publicMaterial的成员变量,并赋给游戏对象,这样我们可以在Unity的编辑器中随时更改贴图。

    using UnityEngine;
    using System.Collections;
    
    public class Test : MonoBehaviour {
    
        public Material cubMeterial;
    
        // Use this for initialization
        void Start () {
            GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
            cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);
            cubeObject.renderer.material = cubMeterial;
    
        }
    
    }
    Ethical behaviour is ... 合乎道德的行为是...... Doing the right thing,even when no one is watching. 在任何时候,即使没有人看见也要做正确的事情。
  • 相关阅读:
    软件工程(2018)第一次作业
    SQA计划
    再冲刺
    第三次冲刺
    第二次冲刺
    小组第一次冲刺
    团队合作初体验
    关于git的认识与想法
    我的第一篇博客
    SQA计划和系统测试规程
  • 原文地址:https://www.cnblogs.com/growthTree/p/4952072.html
Copyright © 2011-2022 走看看