≡
导航
搜索
教程
插件
模型
模板
博客
交易
朋友
Unity 3D 游戏引擎吧
已关注 | 取消
+关注
关注:
46
帖子:
451
签到
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
个
回 帖
表情
图片
视频
欢迎来到本吧,您可以在此发帖和众多大咖交流学习.
选择或直接输入昵称
Tips:支持QQ截图直接粘贴
发表
登录直线网账号
自动登录
忘记密码
免费注册
本吧信息
查看详情
吧主:
mygameplay
本吧公告
优秀文章 【交流】Unity 脚本入门 个人经验及常用方法块 http://www.linecg.com/tieba/content_4292.html 大家可以看一下
我常逛的吧
我管理的吧
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈
|
关于直线
|
版权声明
|
会员须知