zoukankan      html  css  js  c++  java
  • Unity3D第一次亲密接触

    刚开始接触Unity3D引擎,作为一个在MAC上非常出名的商业3D游戏引擎,从开发工具到执行效率都非常的专业简便。标准素材库里的脚本和资源足以不写代码完成一个FPS式的场景。

    首先是资源的导入功能,3DS MAX MAYA之类常用的3D建模工具都可以支持,导入的3D模型会以fbx文件格式存在于项目资源目录中。支持多层纹理材质(可能需要自己写shader),骨骼动画,变形动画等。但是导入之后的材质需要在editor里重新赋予纹理,目前还没有找到好的解决办法(UV坐标是正确导入的)

    代码方面 可以使用boo,js,C#脚本。C#脚本编辑器可以使用vs或者自带的MONO DEVELOP。在使用MONO DEVELOP的时候需要注意代码文件必须保存为unicode的编码,否则会出现很多莫名其妙的编译错误还会让中文变成乱码。 

    所有的行为脚本派生自Behavior类型,行为脚本可以作为Componet赋予场景中的GameObject。c#脚本的对象系统不再是.net里的Object,而是以Unity3d的Object类为基本类型。场景中的物体都派生自GameObject,GameObject派生自Object,Component派生自Object,一个GameObject可以含有多种Componet类型的成员,可以使用GameObject.getComponent方法获取在EDITOR里赋予此物体的Component.所有GameObject都有个Transform Component,可以由此操作对象在场景中的位置和几何变换。行为脚本的基类Behavior也是Component子类,也就是说行为脚本也是以Component的形式和GameObject发生关联。在C#里可以使用public来定义属性,从而可以在Editor的inspector视图中直接给这些属性赋值。既支持基本的C#数值,字串,还支持u3d引擎提供的类型,比如SoundClip类型的public变可以在inspecter里指定为Project View中的音频素材。这里有一个值得注意的地方,对于Component类型的public变量,在inspector中指定一个GameObject时,实际赋予的并不是这个GameObject,而是这个GameObject对应类型的Componet。比如把一个Cube对象赋予给一个Behavior的Transform类型public变量x,结果在C#脚本里是把这个Cube的transform属性赋给了x,不是Component本身。想必这也是出于编辑场景时候的方便,节约一些绕来绕去的GameObject.getComponent调用。对于不想在inspector中出现的变量,可以在C#里设定为private或者protect访问级别。这是比js方便的地方。

     这里附上一段测试上面说的对派生自Component类型变量赋值的测试代码:

     1 public class InspecterTest : MonoBehaviour {
     2     public Transform target;
     3     public AudioClip sound;
     4     protected int ptest;
     5     // Use this for initialization
     6     void Start () {
     7         print ("目标是:"+target.name);
     8         print ("目标位置:"+target.transform.position);
     9         print ("目标类型:"+target.GetType());
    10         print ("目标是不是GameObject?:"+(target is GameObject).ToString());
    11     }
    12     
    13     // Update is called once per frame
    14     void Update () {
    15         
    16     }
    17 }  

     音频方面 通过AudioSource Component添加的音频不仅有3D空间感 连快速移动时候的多普勒效应都已经加入了,可以直接在EDITOR里设定声音的传播范围和衰减函数曲线,非常强大。

    还有很多没有探索到的地方,以后继续完善吧。 


  • 相关阅读:
    python 绘制所有线条、散点等 可用的标记符号(marker)
    Maximal InformMaximal Information Coefficient (MIC)最大互信息系数详解与实现 https://blog.csdn.net/FontThrone/article/details/85227239
    python画图,等间距坐标距离表示不等间距数据值
    机器学习数据库 http://archive.ics.uci.edu/ml/datasets.php https://www.openml.org/d/179
    Matplotlib.pyplot.plot图形符号、风格及颜色简写形式速查表https://blog.csdn.net/Treasure99/article/details/106044114/
    Pycharm 2017.3 永久激活教程https://www.bilibili.com/read/cv11643882/
    学习资源http://imada.huel.edu.cn/resource.html# 数据库/机器学习/安全领域顶会论文
    Python的知识点 plt.plot()函数细节
    原因是标题默认输出英文,如果输出中文,要对字体进行调整。需要在程序定义前输入:
    会讲故事助你成功
  • 原文地址:https://www.cnblogs.com/fancybit/p/2650127.html
Copyright © 2011-2022 走看看