签到

05月05日
尚未签到

共有回帖数 0

    回望空城

    等级:
    Unity3D学习01
    一:Assets文件夹下应该包含的文件夹:
    Materails(材质,材质球),profabs(预组件),textures(纹理,贴图),model(模型,模型导入时也许会自带材质,纹理文件夹,所以一个好习惯就是为每一个导入的模型都建一个单独的文件夹),script(脚本)。

    二:一个功能强大的材质制作软件:SubstanceDesigner
    文件格式:.sbsar
    导入方法:直接导入(前提:在Substance Designer官网下载材质浏览器)
    .sbsar格式材质球在文件夹中直接拖动赋给模型是不行的,要先选中材质球,然后到Inspector面板下拖动才可以

    三:创建预组件:
    先在场景中创建想要的预组件,然后在Hierarchy面板中新建分组(见八),将预组件的物体放入新建组,在profabs文件夹新建profab,然后将Hierarchy面板中的新建组整个拖入新建的profab即可。

    四:ctrl+D复制一个对象,选中对象时按下V,可粘合两个对象

    五:为对象加物理模型:
    选中对象-compoment-physics
    1.Rigibbody(刚体): 可附加重力属性,设置物体重量(mass),物体受外力影响后可
    移动的距离(drag)。Is Kinematic(动态属性)选项表示是否为物体附加动画,如一扇可被打开的门,勾选后物体将不会受重力等外力影响直到另外一个刚体触碰到它。
    2.各种Collider(碰撞器):对应各种形状的碰撞器,形状大小可调,Mesh(网格)碰撞器
    可做出符合物体外形的碰撞器,但消耗资源较大。碰撞器形
    状将影响物体的运动状态,如球形的可以滚动,立方体可以
    堆砌等等。(各种形状的碰撞器可进行叠加以实现复杂形状
    的碰撞器)

    六:添加预制的摄像机模型:
    在assets文件夹下右键-import package-character controller-import
    然后在对应文件夹中将模型(第一人称或第三人称)拖入即可。

    七:创建地形:
    在Hierarchy窗口点击create-terrain即可,默认terrain自带terraincollider,可在terrain(script)选项中对地形进行绘制以及相应的设置(贴图纹理等)。
    在画笔选项中,可以设置Textures,这样在绘制地形时会自动为地形赋予挡前设置的textures。

    八:管理Hierarchy面板:
    有时候加入到场景中的物体太多了,Hierarchy面板会显得很乱,这时候可以:
    GameObject-Create Empty来在Hierarchy面板中创建一个新的分组,然后可以将属性相近的物体放进同一个分组,以便于管理。

    九:创建光源:
    GameObject-Create Other下对应有四种不同的光源;
    1.Directional light(平行光,类似于太阳光)
    2.Point light(点光源,类似于电灯泡)
    3.Spotlight(聚光,类似于手电筒)
    4.Area light(面光,可在一个位置照亮面对它的一切物体)

    两种方法创建光源:
    1.直接创建
    2.将光源绑定到指定物体上,比如电灯泡:
    选中物体,Add Component-Rendering(渲染)-Light
    可在Light选项中调节相关属性(如亮度,颜色,范围等,还可以直接在type选项处更改light的类型,在shadow type选项,可以调节影子相关的设置)

    调节阴影时可能会出现警告,相关选项在:Edit-ProjectSettings-player-Other settings-Rendering path(渲染路径),对应三种选项,选择Deferred lighting(延迟光)就可以使用阴影了。
    Unity3D学习02
    一:创建粒子效果:
    在Hierarchy面板中,Create-Particle System
    在Assets文件夹内右键-Import Package-Particle导入粒子效果包
    在Hierarchy面板中选中Particle System后,可在Inspectors面板中修改粒子系统的相关参数,来达到不同的粒子效果:

    Max Particle:最大生成粒子数量
    Prewarm(预热):勾选后,在载入场景之前粒子系统就可以预先生成
    Start Lifetime:表示每个粒子可持续的时间,单位:秒
    Start Speed:表示粒子运动的速度
    Start Size:粒子的大小

    1.Emission:
    Rate:粒子密度
    2.shape(形状):
    在这里可以调节粒子系统的形状,大小,这里的形状大小指的是整个粒子系统在场景中所覆盖的面积。还可以勾选Random Direction项让粒子的生成方向成随机形式。
    3.Size over Lifetime:
    调整粒子在生成到消失时间段内大小的变化。
    4.Renderer(渲染器):
    调节粒子的材质,可直接用之前导入的粒子效果包来设置。

    二:脚本:
    1.Start()函数只在游戏开始时执行一次
    Update()函数在每一帧执行一次
    2.随机出生点函数
    在Hierarchy面板新建一个GameObject,将它放到场景中,一个GameObject代表一个出生点,选中新建的GameObject,在Inspector面板中点击Tag项,tag是一个标签性的属性,默认的没有出生点,所以点击Add tag,在Element0选项后命名即可新建一个tag了。在语言编辑器中可以通过tag名来控制出生点。
    实现方法是:随机生成一个数字,通过这个数字来在定义好出生点tag的地方选出出生点,其实就是那些空的GameObject,然后将这个出生点的坐标赋值给我们的Player就可以了。

    三:创建HUD显示界面(显示角色反馈信息):
    1.创建一个空的GameObject来装载HUD素材和脚本;
    2.导入素材(tga,jpg等),选中素材,在Inspector面板的Texturetype选项选GUI,点击Apply确认更改;
    3.选中新建GameObject,Add Component-GUITexture,这一步将GameObject中导入的素材锁定在主相机上;
    4.在GUITexture选项的Texture中,可以看到刚刚设定为GUI的素材了,选中一个后就可以在主相机上看到导入的素材了。在Transform选项中,可以调整素材在画面中的位置,在pixel Inset选项中,可以调整素材的大小(??);
    5.写更换素材的脚本:
    Public Texture2D[] HUD_texture; //在这里创建了一个数组用来存放我们要导入的素材,数组的大小可以在Inspector面板进行设置,设置完size后,可以分别为数组的每一个成员导入素材,真是太方便了。
    Public GUITexture HUDTexture;//创建一个GUITexture的变量,他可以给GUI的Texture赋值,赋值对象可以在Inspector面板进行设置,我们设置为刚刚建好的Add了GUI的GameObject就可以了。
    剩下的只用按一定规则给GUITexture.texture赋值为HUD_texture中的一个就可以了。

    这样可以实现血条,物品等信息,碉堡了。
    四:创建物品拾取系统:
    1.导入可拾取物体
    2.写脚本:
    Viod OnTriggerEnter(Collider player)//unity3d自带的的函数,两个有碰撞器的物
    体相撞时才触发
    {
    Play.gameObject.SendMessage("XXXXXX");//XXXXX代表你想触发的函数,比
    如上面写的HUD更换素材函数等等。
    Destroy(this.gameOject);//删除物体
    }
    3.注意,要给物体加碰撞器,并且选上trigger项。
    Unity3D学习03
    一:控制灯光的脚本:
    Public Light aLight;
    aLight = GameObject.Find("有灯光的一个物体名字").GetComponentLight();
    //以上代码可以将代码信息传递给这个物体的光组件。
    aLight.light.intensity = 一个小于8的float数;//这样就可以控制灯组件的亮度了。
    注意,这样写完以后,在Inspector面板的选项处就不能为aLight设置目标了,否则会报错;

    二:定时器:
    Public float Max =10.0f;//定义一个最大的时间

    Void Update()//在每一帧检测
    {
    if(max  0.0f)
    {
    Max -= Time.deltaTime;
    }
    Else
    {
    Max=10.0f;
    …………
    }
    }//每隔max时间执行else中代码;
    Unity3D体会01一:可在物体上加粒子效果实现好玩的又实用的效果,如火焰加烟雾效果

    二:在物体上绑定灯光,达到有趣的效果,如带梦幻效果的树

    三:同一个模型在场景中重复使用的话可以通过改变大小,调整方向来避免单一。四:自带的水面效果碉堡了,在素材文件夹右键导入包,选water(only pro),两种水 面,带反射效果

    五:选中地形后,第五个选项可以批量在地形上种上树,当然,将树的模型换成其他物体也同样可以批量的附到地形上,方便极了。

    六:在水底用粒子系统制作气泡从水底冒起的感觉

    七:自带的地形素材: 素材文件夹右键导入包,选terrain。自带的一些贴图什么的还挺好用。居然还有一棵树…

    八:两种方法导入天空盒子: 1.向摄像机里导入:
    2.向场景中导入:
    在场景中导入任何时候都可以看到,在摄像机中导入只能在该摄像机中看到。 在场景中导入时,可以勾选fog(雾)选项来设置雾气效果。在Ambient light选项中选择光的颜色可以调出各种时段的光照场景。如黑夜:

    九:玻璃效果: 自带玻璃效果:素材文件夹右键导入包,选Glass Refraction(pro),打开后将mat文件直接拖到物体上即可实现物体的玻璃化效果,最好是一个面。
    Unity3D学习04
    一:键盘事件的获取
    1.按下事件:
    Input.GetKeyDown();//如果按下按键,返回ture,否则返回false
    例如:
    If(input.GetKeyDown(KeyCode.A))
    {
    Debug.log("按下了A键");
    }
    2.拾起事件:
    Input.GetKeyUp();//如果抬起了按键,返回ture
    例如:
    If(input.GetKeyUp(KeyCode.A))
    {
    Debug.log("抬起了A键");
    }
    3.长按事件:
    Input.GetKey();
    例如:
    Int num=0;
    If(input.GetKey(KeyCode.A))
    {
    num++;
    Debug.log("A被连按了"+num+"次");
    }

    二:载入新场景
    例如一个碰撞器触发的载入新场景:
    Void OnTriggerEnter(collider player)
    {
    Application.LoadLevel("场景名字");
    }

    三:导出游戏到特定的平台
    1.file-buildsetting
    2.将已建好的场景拖入scenes inbuild窗口实现添加,注意场景排序。
    3.点击player setting按钮,在Inspector面板设置游戏基本信息,如:公司名字,游戏名字,游戏图标。在per-Platform Setting选项中,保证对应平台正确,对于pc,可以调节分辨率,品质,全屏与否等等。
    4.点击build and run或者build保存exe文件即可…

    四:烘培光照贴图
    1.设置静态物体,告诉系统场景中哪些物体是静态的。
    选中物体,在Inspector面板中勾选static即可。
    2.windows-lightmapping(光照贴图)
    在object选项中选择烘培起作用的物体。
    在bake选项中:Mode中,选择DualLightmaps系统会创建出远景和近景两层光照贴图;移动平台低效果游戏可以选Use in forward rend选项;在最下面可以设置天空光线。
    在maps选项:添加light probes(光线探测器),可以采集场景中的光线信息并应用到动态物体上。
    创建空物体,选中该物体,Addcomponent-rendering-light probes
    然后Add Probe,将探测器布置到场景中即可,探测器布置的越多,采样效果越好。
    回到maps选项,bake probes将探测器烘培到场景中,然后回到object选项,将bakeprobes改为bake scene。

    烘培结束后删除场景中的光源。
    要想探测器对动态物体生效,对于动态物体,要选中use light probes选项。

    五:动画制作
    Ctrl+6或windows-Animation打开动画编辑窗口,在资源文件夹内新建储存动画的文件夹Animation,选中物体,点击小红点,就可以录制动画了;

    六:动画控制(同一角色不同状态触发不同动画)
    1.在3ds max里创建动画,导出FBX格式文件,命名规则: 物体名@动画名
    2.在unity3d素材文件夹导入FBX文件,设置rig为legacy;
    3.将模型拖入场景中,在Animations选项中设置size为需要导入的动画片段数,在下面依次导入动画片段。
    4.写脚本:
    animation.wrapMode = WrapMode.Loop; //设置所有动画为循环播放,还有其他方式可设置;
    播放动画代码为:
    animation.play("动画名"); //没有任何过度的播放一个动画;
    animation.CrossFade("动画名"); //自动的从正在播放的动画平滑的切换到指定的动画;
    Unity3D学习05
    一:控制动画播放速度
    animation["动画名"].speed = 2; //将指定动画播放速度变为默认的2倍

    二:为物体施加力
    1.前提:物体为刚体属性
    2.脚本:
    Rigidbody bridbody;
    bridbody = GameObject.GetComponentRigidbody();

    bridbody.AddForce(new Vector(x,y,z));//注意,Vector在用时要new一下
    还可以:
    bridbody.AddForce(Vector3.up*10);
    //Vector3.up*10相当于Vector(0,10,10)

    三:移动物体:
    transform.Translate(Vector3.up*Time.deltaTime*0.1f);//让物体向上移动,后面的表示速度

    四:隐藏和显示物体
    gameObject.renderer.enabled =true/false;//不能隐藏子物体
    gameObject.SetActiveRecursively(true/false);//相当于改变Inspector面板最上面的那个勾。
    注意:若要对一个物体用SetActive实施隐藏后再使其出现,必须保证其所有父物体的active属性为true。可以建一个空物体作为要执行隐藏和显示物体的父物体。

    楼主 2015-08-31 12:23 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知