unity复习整理

创建,移动,删除物体

编辑物体大小,位置属性

添加物体刚体组件

创建点光源

将摄像机对齐到视图-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);但需要新建一个销毁脚本

用于创建文字的GUItextUIText取代,必须要增加头文件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-iport package-skybox

然后设置天空-edit-render settings,就有天空盒效果,点一下就自动应用,很方便

普通碰撞检测函数:function OnCollisionEnter()只要碰撞就执行

添加新场景-file-new sence,再编写一个脚本赋予它就行了,凡是涉及gui的,都要放在Ongui函数中,还要在发布时声明一下,这里声明首场景

Guilayer好像是一个component

创建地形-在创建项目时导入资源包,要在Windows-assertstore-搜索standard assert并下载输入才行创建地形-create-terrian

绘制纹理,平滑工具,绘制纹理,添加材质

种树工具,种草工具(绘制细节工具)

添加雾和天空,都在render settings里,在Windowslightingscene

添加水效果

导入自定义资源包,添加声音-资源菜单下的添加导入自定义包

对于声音,要对一个物体(一般是摄像头)有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(),非常耗费计算机能力

或者直接拖动一个物体到公有变量中

ThelightLightIntensity+=0.01

ThecubeSendmessage(“函数”)

自己制作第一人称控制器,仍然要引用一个角色控制器变量

只有角色控制器才有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玩家偏好,可以允许储存键值对,放在门管理器上?自定义playersaveplayerread就行,类里有一系列的setget命令,都保存在注册表中,但最后要有一个save结尾的,注册表位置,判断键值对存在不存在的函数PlayerPrefs.HasKey(“键值对名”)””

截图功能,就是一个截图函数,Application.CaptureScreenshot(“Screenshot.png”)

在窗口程序是让鼠标出去,也是一个函数了,要用到api函数了,还得要一个焦点设置

Transform.position 是世界坐标,U3DTM5种坐标。。。一种三维坐标,四种二维坐标,坐标转换函数,导入一个动态库。。。

鼠标的解锁

屏幕坐标还能转换为世界坐标

授权服务器与非授权服务器

非授权服务器的创建

客户端的创建,也就几个函数了,连是连上了

网络实例化预制物体,需要添加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组件,用来位置,旋转,缩放的操作,它有positionrorariontranslate(),rotate().lookat()等,还有通过名字查找子物体find()函数

获取轴向:Input.GetAxis(“Horizontal”)为获取横轴轴向的方法,按下左键,返回-1.按右键,返回1

transformrightup,forward分别代表自身体系坐标的 x,y,z,其中forward代表z

Vector3更像是一个向量

猜你喜欢

转载自blog.csdn.net/qq_40058642/article/details/80888234