Unityの插件Liquid Physics 2D目录结构剖析(1)
感谢来自知乎的指路贴的指引,让我顺藤摸瓜发现了如此好用的一个Unity插件—Liquid Physics 2D,一个基于google的liquidfun的2D流体物理模拟的插件。 刚好我近期的项目要用得到,所以在这里想深入了解LP2D的代码机制。虽说LP2D最后更新的版本是1.3.2,而且已经从Unity Assets上下架,而且我下载的只是盗版的1.1版本…但它依然有很强的学习价值。
学习轮子是一个很大的工程,为此我会分成几个部分来剖析代码,今天将从整体的运作机制的脚本结构开始。
- LiquidPhysics2D
- DataStructs
- Documentation
- Editor
- ExampleScenes
- Fixtures
- Gizmos
- Joints
- Licenses
- ParticleDrawingScripts
- Particles
- Plugins
- Prefabs
- Shapes
- Textbed
- Others
LiquidPhysics2D
API
- LPAPIBody.cs 与liquidfun bodies有关的方法
- LPAPIContacts.cs 与liquidfun交互接收(contact listener)有关的方法
- LPAPIFixture.cs 与liquidfun测试物体(fixtures)有关的方法
- LPAPIJoint.cs 与liquidfun关节/连接(joints)有关的方法
- LPAPIParticleGroups.cs 与liquidfun粒子团有关的方法
- LPAPIParticles.cs 与单个或多个liquidfun粒子有关的方法
- LPAPIParticleSystems.cs 与liquidfun粒子系统有关的方法
- LPAPIRaycast.cs 与liquidfun射线(Raycast)有关的方法
- LPAPIShpae.cs 与liquidfun物体形状有关的方法
- LPAPIUtility.cs 与liquidfun物体有关的方法
- LPAPIWorld.cs 与liquidfun世界有关的方法
- PolugonDecomposerAPI.cs 与凸多边形分解算法(Convex decomposition algorithm)有关的方法
ART
存放贴图、材质、Shader的地方
- Materials 材质
- Shaders 渲染器
- textures64 贴图纹理
DataStructs
存储数据结构基类的地方
- LPContact.cs 包括物体测试信息、粒子的结构体
- LPRayCastHit.cs 包括射线击中物体的结构体
Documentation
存放说明文档的地方
Editor
存放插件自定义编辑器相关脚本的地方
- LPChainShapeEditor.cs
- LPConvert.cs
- LPFixturePolyEditor.cs
- LPMenu.cs
- LPParticleGroupPolyEditor.cs
- LPParticleSystemEditor.cs
- LPShapeEditor.cs
ExampleScenes
场景样例
Fixtures
放物体相关脚本的地方
- LPFixture.cs
- LPFixtureBox.cs
- LPFixtureChainShape.cs
- LPFixtureCircle.cs
- LPFixturePoly.cs
Gizmos
放编辑器用的小图标的地方
Joints
放连接处相关脚本的地方
- LPJoint.cs
- LPJointDistance.cs
- LPJointFriction.cs
- LPJointGear.cs
- LPJointMouse.cs
- LPJointPrismatic.cs
- LPJointPulley.cs
- LPJointRevolute.cs
- LPJointRope.cs
- LPJointWeld.cs
- LPJointWheel.cs
Licenses
许可…
ParticleDrawingScripts
放粒子显示脚本的地方
- FoamWeightDrawer.cs
- LPDrawParticleSystem.cs
- ThreeColorFoamWeightDrawer.cs
- WeightAndColorDrawer.cs
Particles
放粒子团(ParticleGroup)脚本的地方
- LPParticleGroup.cs
- LPParticleGroupBox.cs
- LPParticleGroupCircle.cs
- LPParticleGroupPoly.cs
Plugins
放跨平台用的插件的地方
- Android
-
- libliquidfundll.so
-
- x86
-
-
- libliquidfundll.so
-
- iOS 里面有一堆
.cpp
.h
- liquidfundll.bundle 一个很迷的文件,貌似是个多余的文件,会有文件重复警告
- x86
-
- liquidfundll.dll
- x86_64
-
- liquidfundll.bundle
-
- liquidfundll.dll
Prefabs
一堆Prefab和控制Prefab的脚本
- Prefab Scripts
Shapes
LP2D多编程工具脚本
- LPShapeCircle.cs
- LPShapeTools.cs
Textbed
测试用的场景
Others
放在根目录下的脚本
- LPBody.cs
- LPColors.cs
- LPContactListener.cs
- LPCorporeal.cs
- LPEnums.cs
- LPManager.cs
- LPParticleGroupMaterial.cs
- LPParticleMaterial.cs
- LPParticleSystem.cs
- LPThing.cs
由于文件实在太多,后续的具体每个脚本的具体作用等我在研究到那个部分的时候再添加修改。