版本 |
作者 |
参与者 |
完成日期 |
备注 |
UnityAPI_Matrix4x4_V01_1.0 |
严立钻 |
|
2020.06.02 |
|
|
|
|
|
|
立钻哥哥:Unity是一个入门快、提高难的游戏引擎,想要提升能力,至少需要越过3道坎:API+Shader+综合能力;++1、API的积累:对API的合理利用不仅可以减轻自己的编码负担,而且往往可以提高程序的运行效率;这也是钻哥开始“Unity API”独立打造分类的初衷; ++2、Shader编程:想要做出一款精品游戏往往需要有高效的Shader的支持;Unity提供了一套改良的“Shader Lab”系统,优化了繁杂的“Open GL”编程; ++3、综合能力(技术+业务+管理):一款产品的制作除了功能编程外,往往会涉及很多其他领域,例如产品架构、UI交互设计、模型制作等,作为主要的编程人员,对其他相关领域的了解程序往往会影响到产品制作直至最后的产品体验; ++++立钻哥哥一直在推动【VR云游戏=Unity+SteamVR+云技术+5G+AI】,这个只是一个引子,抛砖引玉让大家对整个知识体系有一个明确的落地方向,宝宝们可以根据自己的兴趣方向进行拓展:比如Unity这里是指一种“3D游戏引擎”,也可拓展至“UE4、Cocos2dx”等游戏引擎;SteamVR是一种跨硬件解决方案,也可拓展至“VRTK”等第三方插件;“云技术+5G”是一种跨平台解决方案的核心技术,同样可拓展至其他平台解决方案;AI也是一种先进技术的举例,也可以拓展至任何一种前沿技术; |
++++【Unity API】分类:https://blog.csdn.net/vrunsoftyanlz/category_7637520.html
++++【Unity开发基础】分类:https://blog.csdn.net/vrunsoftyanlz/category_7309057.html
++++【Linux系统编程】分类:https://blog.csdn.net/vrunsoftyanlz/category_9694767.html
++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html
++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html
++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/
#Matrix4x4矩阵 |
#Matrix4x4矩阵++A1、Description描述++B2、Variables变量++C3、Public Function共有函数++D4、Message消息 |
#A1、Description描述 |
++++一个变换矩阵可以表达任意的线性3D变换(例如平移,旋转,缩放,切变等)并且使用齐次坐标系进行投影变换;基本上不会在脚本中使用矩阵;通常都直接使用三维向量、四元数以及Transform对象的函数;在特殊的场合例如设置一个非标准化的摄像机投影时才使用纯粹的矩阵;
++++参考任意一本图形学对于变换矩阵的深入解释;
++++在Unity中,Matrix4x4对象被很多Transform,Camera,Material和GI中的函数使用;
++++Unity中的矩阵使用的是列优先;数据通过行+(列*4)的方式获取;矩阵可以被索引为类似二维数组的形式,但是要以mat[a, b]这样的表达式;其中a代表行号,b代表列号(注意:这正好与笛卡尔坐标系相反);
#B2、Static Variables静态变量 |
++B2、Static Variables静态变量++++B2.1、identity++++B2.2、zero++++B2.5、YanlzXREngine.Matrix4x4.StaticVariables |
++B2.1、identity |
public static Matrix4x4 identity; |
++++[返回值]:返回单位矩阵(只读);
立钻哥哥:This is a matrix that effectively does nothing when applied. It has 1s in the main diagonal and 0s in all other elements: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 |
++B2.2、zero |
public static Matrix4x4 zero; |
++++返回所有元素设置为零的矩阵(只读);
立钻哥哥:The matrix looks like this: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
#C3、Variables变量 |
++C3、Variables变量++++C3.1、determinant ++++C3.2、inverse++++C3.3、isIdentity++++C3.4、this[int,int]++++C3.5、transpose++++C3.6、YanlzXREngine.Matrix4x4.Variables |
++C3.1、determinant |
public float determinant; |
++++矩阵的决定因素;
++C3.2、inverse |
public Matrix4x4 inverse; |
++++相反的矩阵(只读);
++++逆矩阵是指如果乘以原有的矩阵将会得到单位矩阵;
++++如果某些矩阵变换向量在特别的方法中,那么逆矩阵可以变换到他们的背后;例如,对象的世界坐标转本地坐标矩阵和自身转世界坐标矩阵是彼此相反的;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzMatrix4x4 : MonoBehaviour{ public float rotAngle; public float stretch; private MeshFilter mf; private Vector3[] origVerts; private Vector3[] newVerts;
void Start(){ mf = GetComponent<MeshFilter>(); origVerts = mf.mesh.vertices; newVerts = new Vector3[origVerts.Length]; } //立钻哥哥:void Start(){}
void Update(){ Quaternion rot = Quaternion.Euler(rotAngle, 0, 0); Matrix4x4 m = Matrix4x4.TRS(Vector3.zero, rot, Vector3.one); Matrix4x4 inv = m.inverse;
int i = 0; while(i < origVerts.Length){ Vector3 pt = m.MultiplyPoint3x4(origVerts[i]); pt.y *= stretch; newVerts[i] = inv.MultiplyPoint3x4(pt); i++; } //立钻哥哥:while(){}
mf.mesh.vertices = newVerts;
} //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzMatrix4x4{} |
++C3.3、isIdentity |
public bool isIdentity; |
++++该矩阵是否是单位矩阵?
++C3.4、this[int,int] |
public float this[int, int];public float this[int]; |
++++访问在[row, column]处的元素;
++++row和column必须在0到3之间,矩阵是一个4*4的数字数组,可以通过使用这个函数访问单个的元素;
++++按顺序索引访问元素(包含0 .. 15);
++++矩阵是一个4*4的数字数组(总16个数);可以使用一维索引来访问单个元素;这个索引是row+column*4;
++++注意:标准数学符号,row是第一个索引;
++C3.5、transpose |
public Matrix4x4 transpose; |
++++返回这个矩阵的转置(只读);
++++转置矩阵是将原行列交换(即沿主对角线翻转);
1 2 3 4 5 6 7 8 8 10 11 12 13 14 15 16 |
++++转换后矩阵是这样:
1 5 8 13 2 6 10 14 3 7 11 15 4 8 12 16 |
#D4、Functions函数 |
++D4、Functions函数++++D4.1、GetColumn++++D4.2、GetRow++++D4.3、MultiplyPoint++++D4.4、MultiplyPoint3x4++++D4.5、MultiplyVector++++D4.6、SetColumn++++D4.7、SetRow++++D4.8、SetTRS++++D4.9、ToString++++D4.10、YanlzXREngine.Matrix4x4.Functions |
++D4.1、GetColumn |
public Vector4 GetColumn(int i); |
++++获取矩阵的一列;
++++第i列作为Vector4返回,i必须在0到3之间;
++D4.2、GetRow |
public Vector4 GetRow(int i); |
++++返回矩阵的一行;
++++第i行作为Vector4返回,i必须在0到3之间;
++D4.3、MultiplyPoint |
public Vector3 MultiplyPoint(Vector3 v); |
++++通过这个矩阵变换位置;
++++返回由任意矩阵变化得到的位置v;如果这个矩阵是一个正规的3D变换矩阵,使用MultiplyPoint3x4比它更快;MultiplyPoint比较慢,但是能处理投影变换;
//Find our current location in the camera’s projection space. Vector3 pt = Camera.main.projectionMatrix.MultiplyPoint(transform.position); |
++D4.4、MultiplyPoint3x4 |
public Vector3 MultiplyPoint3x4(Vector3 v); |
++++通过这个矩阵变换位置(快);
++++返回由当前变换矩阵变换得到的位置v;这个函数是MultiplyPoint的快速版,但是它只能处理常规的3D变换;MultiplyPoint较慢,但是能处理投影变换;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzMatrix4x4 : MonoBehaviour{ public float rotAngle; public float stretch; private MeshFilter mf; private Vector3[] origVerts; private Vector3[] newVerts;
void Start(){ mf = GetComponent<MeshFilter>(); origVerts = mf.mesh.vertices; newVerts = new Vector3[origVerts.Length]; } //立钻哥哥:void Start(){}
void Update(){ Quaternion rot = Quaternion.Euler(rotAngle, 0, 0); Matrix4x4 m = Matrix4x4.TRS(Vector3.zero, rot, Vector3.one); Matrix4x4 inv = m.inverse;
int i = 0; while(i < origVerts.Length){ Vector3 pt = m.MultiplyPoint3x4(origVerts[i]); pt.y *= stretch; newVerts[i] = inv.MultiplyPoint3x4(pt); i++; } //立钻哥哥:while(){}
mf.mesh.vertices = newVerts;
} //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzMatrix4x4{} |
++D4.5、MultiplyVector |
public Vector3 MultiplyVector(Vector3 v); |
++++通过这个矩阵变换方向;
++++这个函数类似于MultiplyPoint,但它是变换方向而不是位置;在变换方向时,仅考虑矩阵的旋转部分;
++D4.6、SetColumn |
public void SetColumn(int i, Vector4 v); |
++++设置矩阵的一列;
++++使用这个来构建一个变换矩阵,这个矩阵使用right,up和forward向量;
++D4.7、SetRow |
public void SetRow(int i, Vector4 v); |
++++设置矩阵的一行;
++++第i行设置为v,i必须在0到3之间;
++D4.8、SetTRS |
public void SetTRS(Vector3 pos, Quaternion q, Vector3 s); |
++++设置这个矩阵为一个平移、旋转和缩放矩阵;
++++当前的矩阵被修改,因此具有位置pos,旋转q和缩放s;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzMatrix4x4 : MonoBehaviour{ public Vector3 translation; public Vector3 eulerAngles; public Vector3 scale = new Vector3(1, 1, 1); private MeshFilter mf; private Vector3[] origVerts; private Vector3[] newVerts;
void Start(){ mf = GetComponent<MeshFilter>(); origVerts = mf.mesh.vertices; newVerts = new Vector3[origVerts.Length]; } //立钻哥哥:void Start(){}
void Update(){ Quaternion rotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, eulerAngles.z); Matrix4x4 m = Matrix4x4.identity; m.SetTRS(translation, rotation, scale);
int i = 0; while(i < origVerts.Length){ newVerts[i] = m.MultiplyPoint3x4(origVerts[i]); i++; } //立钻哥哥:while(){}
mf.mesh.vertices = newVerts;
} //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzMatrix4x4{} |
++D4.9、ToString |
public string ToString();public string ToString(string format); |
++++返回这个矩阵格式化好的字符串;
#E5、Static Functions静态函数 |
++E5、Static Functions静态函数++++D5.1、Ortho++++D5.2、Perspective++++D5.3、Scale++++D5.4、TRS++++D5.5、YanlzXREngine.Matrix4x4.StaticFunctions |
++D5.1、Ortho |
public static Matrix4x4 Ortho(float left, float right, float bottom, float top, float zNear, float zFar); |
++++创建一个正交投影矩阵;
++++返回的矩阵是视口left到right,bottom到top的区域,带有zNear和zFar深度裁剪平面;
++++如果想使用正交用来像素修正渲染,最好使用GL.LoadPixelMatrix,因为它会为Direct3D渲染器运用适当的half-texel偏移;
++D5.2、Perspective |
public static Matrix4x4 Perspective(float fov, float aspect, float zNear, float zFar); |
++++创建一个透视投影矩阵;
++++fov是透视矩阵的垂直视野,aspect为宽高比,zNear和zFar设置为深度裁剪平面;
++D5.3、Scale |
public static Matrix4x4 Scale(Vector3 v); |
++++创建一个缩放矩阵;
++++返回沿着坐标轴由向量v缩放的矩阵,该矩阵看起来像这样:
v.x 0 0 0 0 v.y 0 0 0 0 v.z 0 0 0 0 1 |
++D5.4、TRS |
public static Matrix4x4 TRS(Vector3 pos, Quaternion q, Vector3 s); |
++++创建一个平移、旋转和缩放矩阵;
++++返回的矩阵具有位置pos,旋转q和缩放s;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzMatrix4x4 : MonoBehaviour{ public Vector3 translation; public Vector3 eulerAngles; public Vector3 scale = new Vector3(1, 1, 1); private MeshFilter mf; private Vector3[] origVerts; private Vector3[] newVerts;
void Start(){ mf = GetComponent<MeshFilter>(); origVerts = mf.mesh.vertices; newVerts = new Vector3[origVerts.Length]; } //立钻哥哥:void Start(){}
void Update(){ Quaternion rotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, eulerAngles.z);
//Matrix4x4 m = Matrix4x4.identity; //m.SetTRS(translation, rotation, scale); Matrix4x4 m = Matrix4x4.TRS(translation, rotation, scale);
int i = 0; while(i < origVerts.Length){ newVerts[i] = m.MultiplyPoint3x4(origVerts[i]); i++; } //立钻哥哥:while(){}
mf.mesh.vertices = newVerts;
} //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzMatrix4x4{} |
#F6、Operators运算符重载 |
++F6、Operators运算符重载++++F6.1、operator*++++F6.2、YanlzXREngine.Matrix4x4.Operators |
++F6.1、operator* |
public static Matrix4x4 operator *(Matrix4x4 lhs, Matrix4x4 rhs);public static Vector4 operator *(Matrix4x4 lhs, Vector4 v); |
++++两个矩阵相乘;
++++返回结果是lhs * rhs;
++++通过矩阵变换思维向量;
#G7、立钻哥哥对Matrix4x4类的拓展 |
++++【Unity API】分类:https://blog.csdn.net/vrunsoftyanlz/category_7637520.html
++++【Unity开发基础】分类:https://blog.csdn.net/vrunsoftyanlz/category_7309057.html
++++【Linux系统编程】分类:https://blog.csdn.net/vrunsoftyanlz/category_9694767.html
++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html
++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html
++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/
立钻哥哥推荐的拓展学习链接(Link_Url) |
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
++++虚拟现实VR资讯: https://blog.csdn.net/VRunSoftYanlz/article/details/89165846
++++HTC_VIVE开发基础:https://blog.csdn.net/VRunSoftYanlz/article/details/81989970
++++Oculus杂谈:https://blog.csdn.net/VRunSoftYanlz/article/details/82469850
++++Oculus安装使用:https://blog.csdn.net/VRunSoftYanlz/article/details/82718982
++++Unity+SteamVR=>VR:https://blog.csdn.net/VRunSoftYanlz/article/details/88809370
++++Unity减少VR晕眩症:https://blog.csdn.net/VRunSoftYanlz/article/details/89115518
++++SteamVR简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86484254
++++SteamVR脚本功能分析:https://blog.csdn.net/VRunSoftYanlz/article/details/86531480
++++SteamVR2.0开发指南:https://blog.csdn.net/VRunSoftYanlz/article/details/86618187
++++SteamVR2.2.0开发指南:https://blog.csdn.net/VRunSoftYanlz/article/details/88784527
++++SteamVR2.2.0快速入门:https://blog.csdn.net/VRunSoftYanlz/article/details/88833579
++++SteamVR2.2.0交互系统:https://blog.csdn.net/VRunSoftYanlz/article/details/89199778
++++SteamVR2.2.0传送机制:https://blog.csdn.net/VRunSoftYanlz/article/details/89390866
++++SteamVR2.2.0教程(一):https://blog.csdn.net/VRunSoftYanlz/article/details/89324067
++++SteamVR2.2.0教程(二):https://blog.csdn.net/VRunSoftYanlz/article/details/89894097
++++SteamVR_Skeleton_Poser:https://blog.csdn.net/VRunSoftYanlz/article/details/89931725
++++SteamVR实战之PMCore:https://blog.csdn.net/VRunSoftYanlz/article/details/89463658
++++SteamVR/Extras:https://blog.csdn.net/VRunSoftYanlz/article/details/86584108
++++SteamVR/Input:https://blog.csdn.net/VRunSoftYanlz/article/details/86601950
++++OpenXR简介:https://blog.csdn.net/VRunSoftYanlz/article/details/85726365
++++VRTK杂谈:https://blog.csdn.net/VRunSoftYanlz/article/details/82562993
++++VRTK快速入门(杂谈):https://blog.csdn.net/VRunSoftYanlz/article/details/82955267
++++VRTK官方示例(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82955410
++++VRTK代码结构(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82780085
++++VRTK(SceneResources):https://blog.csdn.net/VRunSoftYanlz/article/details/82795400
++++VRTK_ControllerEvents:https://blog.csdn.net/VRunSoftYanlz/article/details/83099512
++++VRTK_InteractTouch:https://blog.csdn.net/VRunSoftYanlz/article/details/83120220
++++虚拟现实行业应用:https://blog.csdn.net/VRunSoftYanlz/article/details/88360157
++++Steam平台上的VR:https://blog.csdn.net/VRunSoftYanlz/article/details/88960085
++++Steam平台热销VR:https://blog.csdn.net/VRunSoftYanlz/article/details/89007741
++++VR实验:以太网帧的构成:https://blog.csdn.net/VRunSoftYanlz/article/details/82598140
++++实验四:存储器扩展实验:https://blog.csdn.net/VRunSoftYanlz/article/details/87834434
++++FrameVR示例V0913:https://blog.csdn.net/VRunSoftYanlz/article/details/82808498
++++FrameVR示例V1003:https://blog.csdn.net/VRunSoftYanlz/article/details/83066516
++++SwitchMachineV1022:https://blog.csdn.net/VRunSoftYanlz/article/details/83280886
++++PlaySceneManagerV1022:https://blog.csdn.net/VRunSoftYanlz/article/details/83280886
++++Unity5.x用户手册:https://blog.csdn.net/VRunSoftYanlz/article/details/81712741
++++Unity面试题ABC:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++Unity面试题D:https://blog.csdn.net/VRunSoftYanlz/article/details/78630838
++++Unity面试题E:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity面试题F:https://blog.csdn.net/VRunSoftYanlz/article/details/78630945
++++Cocos2dx面试题:https://blog.csdn.net/VRunSoftYanlz/article/details/78630967
++++禅道[zentao]:https://blog.csdn.net/VRunSoftYanlz/article/details/83964057
++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818
++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502
++++Lua快速入门篇(基础概述):https://blog.csdn.net/VRunSoftYanlz/article/details/81041359
++++框架知识点:https://blog.csdn.net/VRunSoftYanlz/article/details/80862879
++++游戏框架(UI框架夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80781140
++++游戏框架(初探篇):https://blog.csdn.net/VRunSoftYanlz/article/details/80630325
++++.Net框架设计:https://blog.csdn.net/VRunSoftYanlz/article/details/87401225
++++从零开始学架构:https://blog.csdn.net/VRunSoftYanlz/article/details/88095895
++++设计模式简单整理:https://blog.csdn.net/vrunsoftyanlz/article/details/79839641
++++专题:设计模式(精华篇):https://blog.csdn.net/VRunSoftYanlz/article/details/81322678
++++U3D小项目参考:https://blog.csdn.net/vrunsoftyanlz/article/details/80141811
++++Unity小游戏算法分析:https://blog.csdn.net/VRunSoftYanlz/article/details/87908365
++++Unity案例(Vehicle):https://blog.csdn.net/VRunSoftYanlz/article/details/82355876
++++UML类图:https://blog.csdn.net/vrunsoftyanlz/article/details/80289461
++++PowerDesigner简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86500084
++++Unity知识点0001:https://blog.csdn.net/vrunsoftyanlz/article/details/80302012
++++Unity知识点0008:https://blog.csdn.net/VRunSoftYanlz/article/details/81153606
++++U3D_Shader编程(第一篇:快速入门篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372071
++++U3D_Shader编程(第二篇:基础夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372628
++++Unity引擎基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78881685
++++Unity面向组件开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78881752
++++Unity物理系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78881879
++++Unity2D平台开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78882034
++++UGUI基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78884693
++++UGUI进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78884882
++++UGUI综合:https://blog.csdn.net/vrunsoftyanlz/article/details/78885013
++++Unity动画系统基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78886068
++++Unity动画系统进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78886198
++++Navigation导航系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78886281
++++Unity特效渲染:https://blog.csdn.net/vrunsoftyanlz/article/details/78886403
++++Unity数据存储:https://blog.csdn.net/vrunsoftyanlz/article/details/79251273
++++Unity中Sqlite数据库:https://blog.csdn.net/vrunsoftyanlz/article/details/79254162
++++WWW类和协程:https://blog.csdn.net/vrunsoftyanlz/article/details/79254559
++++Unity网络:https://blog.csdn.net/vrunsoftyanlz/article/details/79254902
++++Unity资源加密:https://blog.csdn.net/VRunSoftYanlz/article/details/87644514
++++PhotonServer简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86652770
++++编写Photon游戏服务器:https://blog.csdn.net/VRunSoftYanlz/article/details/86682935
++++C#事件:https://blog.csdn.net/vrunsoftyanlz/article/details/78631267
++++C#委托:https://blog.csdn.net/vrunsoftyanlz/article/details/78631183
++++C#集合:https://blog.csdn.net/vrunsoftyanlz/article/details/78631175
++++C#泛型:https://blog.csdn.net/vrunsoftyanlz/article/details/78631141
++++C#接口:https://blog.csdn.net/vrunsoftyanlz/article/details/78631122
++++C#静态类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630979
++++C#中System.String类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630945
++++C#数据类型:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity3D默认的快捷键:https://blog.csdn.net/vrunsoftyanlz/article/details/78630838
++++游戏相关缩写:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++UnityAPI.Rigidbody刚体:https://blog.csdn.net/VRunSoftYanlz/article/details/81784053
++++UnityAPI.Material材质:https://blog.csdn.net/VRunSoftYanlz/article/details/81814303
++++UnityAPI.Android安卓:https://blog.csdn.net/VRunSoftYanlz/article/details/81843193
++++UnityAPI.AndroidJNI安卓JNI:https://blog.csdn.net/VRunSoftYanlz/article/details/81879345
++++UnityAPI.Transform变换:https://blog.csdn.net/VRunSoftYanlz/article/details/81916293
++++UnityAPI.WheelCollider轮碰撞器:https://blog.csdn.net/VRunSoftYanlz/article/details/82356217
++++UnityAPI.Resources资源:https://blog.csdn.net/VRunSoftYanlz/article/details/83155518
++++JSON数据结构:https://blog.csdn.net/VRunSoftYanlz/article/details/82026644
++++CocosStudio快速入门:https://blog.csdn.net/VRunSoftYanlz/article/details/82356839
++++Unity企业内训(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82634668
++++Unity企业内训(第1讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82634733
++++Unity企业内训(第2讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82861180
++++Unity企业内训(第3讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82927699
++++Unity企业内训(第4讲):https://blog.csdn.net/VRunSoftYanlz/article/details/83479776
++++Unity企业内训(第5讲):https://blog.csdn.net/VRunSoftYanlz/article/details/83963811
++++Unity企业内训(第6讲):https://blog.csdn.net/VRunSoftYanlz/article/details/84207696
++++钻哥带您了解产品原型:https://blog.csdn.net/VRunSoftYanlz/article/details/87303828
++++插件
++++计算机组成原理(教材篇):https://blog.csdn.net/VRunSoftYanlz/article/details/82719129
++++5G接入:云计算和雾计算:https://blog.csdn.net/VRunSoftYanlz/article/details/88372718
++++云计算通俗讲义:https://blog.csdn.net/VRunSoftYanlz/article/details/88652803
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz
--_--VRunSoft:lovezuanzuan--_--