Unity3D开发技术讲解

默认教学计划
4006人加入学习
(14人评价)
价格 免费
教学计划

欧拉角

三维向量,ZXY:先Z旋转,然后X旋转,最后Y旋转

万向节死锁:有两个轴旋转的过程中重叠了,一个轴的意义就消失了了,所以在unity中,都是讲欧拉角转换成四元数,这样可以有效避免死锁。

欧拉角转换成四元数:

quaternion.EulerAngles(欧拉角,三维的)

quaternion.Euler(欧拉角,三维的); 

[展开全文]

四元数:高阶复数  用于旋转

x =a+bi+cj+dk  向量(i,j,k)

可以写成 W = (i,j,k)*a ,也就是说这个向量绕着a旋转多少度到W, i,j,k和a没有直接关系

 

 

为什么使用四元数旋转

只用一个四位向量就可以进行任意旋转

 

四元数的差值

1、球形差值slerp,可以平滑的进行旋转

transform.rotation = quaternion.slerp(transform.rotation,quaternion.lookroattion(target.position - transform.posion),rotSpeed*time.deltatime);

 

绕着某个轴进行旋转

transform.rotation = quaternion.angleAxis(30.0f,transform.right)*transform.rotation;

绕着某个轴旋转了多少度

transform.rotation = quaternion.Euler(new vector3(30,1,1));

*transform.right 就代表朝着X轴转动

 

[展开全文]

静态处理:创建的一些物体,给它的static打勾,可以节省消耗

图片RGB32bit不压缩

安卓用下面格式

Rgb pvrtc4bit

rgba pvrtc4bit:阿尔法通道

iphone 用etc

[展开全文]

向量代表这方向,和点。

U+V 是两个向量的平行四边形的中线

U-V 可以表示两个的方向,从V移动到U的点

 

transform+ 向量的差值 * 标准化 * 一股额常数

 

[展开全文]

Unity 优化的几点:

静态优化,

动态优化,

Profiler工具

[展开全文]

x = a + bI + cJ + dK

 

w = (b, c, d)a

 

 

[展开全文]

矩阵

平移转换

缩放变换

 

[展开全文]

Profiler工具的使用!

项目比较卡!

[展开全文]

动态优化,对于场景中存在的物体,不是通过动态加载出来的物体,并且具有动作的物体进行优化,优化的脚本

void Start()

{

    CombineToMesh(this.Gamobject);

public viod CombineToMesh(GameObject  _go)

{

  SkinnedMeshRender[] smr = _go.GetCompoentsInChildren<SkinnerMeshRender>();

List<CombineInstance> Icom = new List<CombineInstance>();

List<aterial>lmat = new List<Material>();

List<Transform>ltra = new List<Transform>(); 

for(int i=0;<smr.Length;i++)

{

   lmat.AddRange(smr[i].materials);

 ltra.AddRange(smr[i].bomes);

for(int sub=0;sub<smr[i].sharedMesh.subMeshCount;sub++)

{

CombineInstance ci = new CombineInstance();

ci.mesh = smr[i].sharedMesh;

ci.subMeshIndex = sub;

Icom.Add(ci)

}

Destory(smr[i].gameObject);

 }

SKilnnedMeshRender _r = _go.GetCompoent<SkinnerMesherRender>();

if(_r==null)

{

  _r = _go.AddCompent<SkillnnedMeshRender>();

_r.sharedMesh = new Mesh();

_r.bones = ltra.ToArray();

_r.materials = new Material[] {lmat[0]};

_r.rootBone = _go.transform;

_r,sharedMesh.CombineMeshes(Icom.ToArray(),true,false);

 }

针对于相同的骨骼动画的相同一类物体!

[展开全文]

N·V=|U|·|V|cos 向量点乘通常用在计算角度的。值 等于零就是90度,大于零就是小于90度,小于零就是大于90度。

U+V 向量加法通常计算位置偏离。

[展开全文]

动态对象的优化

如果使用实例化就不用使用动态优化了

因为实例化的都是动态生成的

 

void start(){ } public void CombineToMesh(GameObject _go) { SkinnedMeshRenderer[]smr=_go.Get }

[展开全文]

       游戏优化

静态优化

使用unity自带的static进行处理 

进行材质的处理

手机端一般采用的是pvrtv4位进行压缩

rgb32 bit

苹果手机一般才用的是etc进行压缩

generate mip maps 根据我们的视距采用不同的贴图

模型定点数量 越少越好

animator  一般没有动作都去掉

自适应问题:

锚点问题

动态优化

 

profiler

[展开全文]

授课教师

IT公司技术总监

课程特色

视频(7)