创建,移动,删除物体
编辑物体大小,位置属性
添加物体刚体组件
创建点光源
将摄像机对齐到视图-gameobject-对其到窗口,记住要选中摄像机
开始执行
给物体添加材质,create-metrial-创建材质球并编辑-直接拖动到物体名称上即可
保存场景与保存工程
创建脚本文件夹
导入,应用图片-拖进去即可
创建预制物体(可以重复使用)与复制物体-直接拖动到预制物体就算预制物体,ctril+d是原地复制,CTRL+移动就可以平移
空物体的子物体-都选中然后拖动到空物体上,好处是便于集中处理
建立一个射弹-创建球体,编辑属性,
输入管理器edit-project settings-input
time.deltatime-两帧之间的时间间隔
transform-代表主摄像机
而且要把脚本拖放到主摄像机上才行,也可以拖到球体上
在c#中,浮点型后面一定要有f
当有多个脚本时,默认执行第一个脚本
实例化命令:
用Instantiate生成物体
还应该把射弹赋予物体
检测鼠标左键Input.GetButtonDown("Firel")
给物体加力:n.rigidbody.AddForce(fwd*28000);
转换方向(成摄像机方向):var fwd:Vector3 = transform.TransformDirection(Vector3.forwaard);
销毁物体:Destroy(gameObject,3.0);但需要新建一个销毁脚本
用于创建文字的GUItext被UIText取代,必须要增加头文件using UnityEngine.UI;
访问物体:gameObject.Find("wenzi").GetComponent(GUIText).Text="射弹数:"+sdshu;
实现消灭数计数功能:引用其他物体的公有变量,弄一个检查脚本
Transform.Find("Main Camera").GetComponent("sheji").xmshu++;
是每一个物体自身检查脚本
添加按钮
restart脚本(在地面物体上,没有启用,手动设置true激活)的OnGUI函数
function OnGUI(){
if(GUI.Button(Rect(180,100,60,30),"退出")){
Application.Quit();
}
Application.LoadLevel("01");//加载01场景
audio.Play();
audio.Pause();
audio.Stop();
}
添加声音,在地面上添加音频源组件
添加天空盒子
导入资源包-资源asset-》i你port package-》skybox
然后设置天空-》edit-》render settings,就有天空盒效果,点一下就自动应用,很方便
普通碰撞检测函数:function OnCollisionEnter()只要碰撞就执行
添加新场景-file-new sence,再编写一个脚本赋予它就行了,凡是涉及gui的,都要放在Ongui函数中,还要在发布时声明一下,这里声明首场景
Guilayer好像是一个component
创建地形-在创建项目时导入资源包,要在Windows-assertstore-搜索standard assert并下载输入才行创建地形-create-terrian
绘制纹理,平滑工具,绘制纹理,添加材质
种树工具,种草工具(绘制细节工具)
添加雾和天空,都在render settings里,在Windows的lighting,scene里
添加水效果
导入自定义资源包,添加声音-资源菜单下的添加导入自定义包
对于声音,要对一个物体(一般是摄像头)有audiolistener组件,还有audiosource声音源在其他地方
导入资源,找放置的资源-》选中,把光标放在环境中,点F键,双击也可以
层layer的概念
平行光的选择性照射
第一人称的canricater cotuller组件,设置脚步坡度限制,台阶高度,皮肤厚度(碰撞有关,皮肤太厚会导致颤抖,大约是半径的百分之十),最小移动距离
设置阴影,在camera的一个组件上
主摄像机的背景颜色什么的,culling mask与层有关,是渲染效果,投影方式projection透视,正交(一般2D游戏用)渲染模式,视野filed of view,截切平面=渲染距离,cillping plan,渲染其中的东西,摄像机视图(窗口坐标系统),满屏宽度为1,满屏高度也为1.。。。可以做宽频游戏。。。不是,是分屏游戏,深度值,depth,先后绘制有关,越大越先绘制
画中画效果。。另一个摄像机制作小地图。。。
公有变量才会在监视面板中修改
C#中string是小写的
Vector3数据类型,坐标类型.forward .up .right .zero . 使用
Public vector3 v;
V = new Vector(0,0,speed)
Rigidbody(依附谁,代表谁).velocity(初速度) = speed;物体的运动
物体变色,color型变量
Oldcolor = renderer.material.color选取颜色,onmouseover函数onmouseexit函数onmousedown函数audio.Play函数
Updata函数在每一帧时都调用,函数很多
C#函数void function()
弹跳组件与创建物理材质create material
访问其他物体技巧Find()与FindWithTag(),非常耗费计算机能力
或者直接拖动一个物体到公有变量中
Thelight。Light。Intensity+=0.01;
Thecube。Sendmessage(“函数”)
自己制作第一人称控制器,仍然要引用一个角色控制器变量
只有角色控制器才有move命令
判断哪里发生碰撞只是一个属性
物体动画,分割动画,用代码来控制什么播放
3Dmax模型的导入。。。只支持标准材质,导出必须是fbs类型
各种交互,碰撞交互
网格碰撞器Mesh collider开销很大,一般不用
OnControllerColliderHit函数,控制器碰撞器,专门用来检测角色控制器的碰撞
有AudioClip类型的
If(hit.gameObject.tag == “door” && dooridopen == false)
Hit.audio.PlayOnShot(door_open_sound);
按住shift键可以调整碰撞器大小(小绿点)
点击坐标系可以快速对正坐标,下面是透视图与平行图切换
光线投射函数自动开关门,如果侧身过去就开不开了
Transform.findchild(‘door’).sendmesage(‘函数’)
刚体不使用重力也可以
Is Trigger好像与触发函数有关OnTriggerEnter进入触发区执行
gameObject就是物体本身了,transform好像也是
动态显示纹理-是一个GUI类型的GUITexture
动态显示材质
创建一把枪(子弹的发射点)-一个空物体-作为fps主相机的子物体,第二级子物体,可以设置transform组件的000
依靠速度的销毁
忽视碰撞命令,防止与主角相撞physics.ingnorecollition(),是关于两个物体的忽视碰撞
Transform.root.属性表示总根
协同程序是子线程,用StartCoroutine(‘函数’)使用,与普通调用函数不同,在效果上区别不大
添加准星
飞行浏览模式
执行时添加脚本或组件.addComponent(“函数名”),会返回compontent变量
从物体上删除也好说,destroy(变量)
脚本的查找引用,右键菜单的查找命令
粒子系统在effect组件中,是依附在其他物体上的
Render为渲染 colider为碰撞
新版粒子系统直接创建
一般自身带的碰撞器要关闭,转而添加一些简单碰撞器
导入粒子资源
另一个旋转函数,是绕一个点进行循环,rotatearound
菜单GUI 的制作
截图就是新建一个场景
要选择图片,在新建一个GUITexture,这样就自动选择上了,图片是texture2D类型的,用的是.texture属性
Esc键弹出窗口,是一个rect型的,它的函数是GUI.window(id号,窗口函数windowcontain,标题)
创建按钮与按钮点击检测放在一起用if解决
自定义窗口,是一门大学问,放在主摄像机了,GUISkin
改造第三人称控制器,骨骼的匹配
注视与欧拉角,就是注视主角的方法,用transform.Lookat(“player”)就行,一个很简单的脚本
GUI控件的使用
动画基础
平移动画,旋转动画,缩放动画,分别对应三种参数了,用脚本改变这个参数值,
Transform.position.x-scale-什么的
数学插值函数Mathf.Lerp(),这个用来制作动画的
GUItexture自适应屏幕分辨率
直接使用动画面板完成动画,动画面板是选中一个物体后,在Windows下的animation上,真的可以自制动画
动画事件,到一定时间点,添加运行函数
延时语句,waitforseconds(浮点数)
第三人称摄像机跟随,-直接变成子物体
mecanim动画,动画控制器,状态机几个动画的合并,与人物运动有关,不怎么方便的
动画层,动画遮罩,用于人骨骼的部分动作,不参加动作计算也会优化
动画融合,还有它一系列的get set函数
骨骼的重定向功能
光照贴图,只适用于静态物体,用来代替光照的实时运算,这样比较节省运算,是static选择框,就在那么,还有在其模型里选择general lightingmap光照贴图勾选上,还要烘培一下。。。生成一个贴图
淘宝上有卖素材的,一块钱
给子弹添加拖尾渲染组件
储存类,playerprefs玩家偏好,可以允许储存键值对,放在门管理器上?自定义playersave,playerread就行,类里有一系列的set,get命令,都保存在注册表中,但最后要有一个save结尾的,注册表位置,判断键值对存在不存在的函数PlayerPrefs.HasKey(“键值对名”)””
截图功能,就是一个截图函数,Application.CaptureScreenshot(“Screenshot.png”)
在窗口程序是让鼠标出去,也是一个函数了,要用到api函数了,还得要一个焦点设置
Transform.position 是世界坐标,U3DTM有5种坐标。。。一种三维坐标,四种二维坐标,坐标转换函数,导入一个动态库。。。
鼠标的解锁
屏幕坐标还能转换为世界坐标
授权服务器与非授权服务器
非授权服务器的创建
客户端的创建,也就几个函数了,连是连上了
网络实例化预制物体,需要添加Network View组件,有这个就可以动态同步了
断开时销毁物体,NetWork.DestroyPlayerObject(什么什么的)
实时动态同步
创建角色,玩家id是系统自动生成的
[RPC]过程,RPC函数就是依次调用每个脚本的指定函数作用
在脚本中设置脚本不起作用,就是让enable=false
Awake函数不管脚本有没有禁用,它都会运行
删除了玩家要重新加载一下场景
玩家控制脚本
角色控制-IP一致性
能在后台运行就不用担心失去焦点
远程函数就是rpc的
聊天系统也就是与GUI有关,也就不算太难了,读取它的键值对
发布游戏
play setting
Switch platform
web版
质量控制
Input类封装了鼠标,键盘,触摸屏等一系列方法
Input.GetAxis(“MouseX”)为获取X轴移动速度,GetKey为获取指定按键,GetMouseButton,GetTouch
每个物体都有transform组件,用来位置,旋转,缩放的操作,它有position,rorarion,translate(),rotate().lookat()等,还有通过名字查找子物体find()函数
获取轴向:Input.GetAxis(“Horizontal”)为获取横轴轴向的方法,按下左键,返回-1.按右键,返回1
transform的right,up,forward分别代表自身体系坐标的 x,y,z,其中forward代表z轴
Vector3更像是一个向量