# ETAFrame **Repository Path**: qiaogaojian/ETAFrame ## Basic Information - **Project Name**: ETAFrame - **Description**: GameFramework for Unity3d - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2018-06-30 - **Last Updated**: 2021-08-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ETAGameFramework Unity3d客户端游戏开发框架,工具和特性 ## Frame ### CSVLoader #### 说明 Func:读取CSV文件 解析CSV数据为一个二维字典 Dictionary> 结果保存到字典,以RowID作为Key值,对应每一行的数据,每一行的数据以ColID作为Key值,用字典保存。 #### CSV源数据格式 第一行数据:注释 第二行数据:字段名字 第三行数据:数据类型 第四行开始:游戏数据 第一列数据:数据ID 第二列开始:自定义数据 #### 支持的数据类型 ----------------- |空值 | 类型 | 示例| |-----|-------------|------ |0 |int, |1 |0 |float, |1.2 |0 |string, |中国 |0 |int[], |1|2|3 |0 |float[], |1.2|2.3|3.4 |0 |string[] |春|夏|秋|冬 |0 |int[,], |1:2:3|4:5:6 |0 |float[,], |1.2:2.3:3.4|5.6:6.7:7.8 |0 |string[,], |a:b:c|d:e:f |0 |enum, |2 |0 |boolean. |1 #### 注意事项 - string类型数据中有逗号的要用中文的逗号 - 二维数组用[:]表示 - 枚举用int表示,使用时再转换 - 数组如果只有一个值, 不要加" | " - 数组可以有多个值, 可以扩展 - 如果没有数据, 不要空着, 以空值为准 - string 如果有需要 空值可以为空格 - 如果不做说明,CSV表中的所有符号都是半角符号(英文符号) ### PlayerprefsData ### EventManager #### 说明 1. 使用事件之前 先声明相应的 EventId 枚举. 2. 事件有注册必须要有注销 成对出现 不然会出现不可预知的bug . 3. 事件管理器最多支持带3个泛型参数的回调函数,如果需要更多参数请封装对象. ### LocalLocation ### Singleton #### Singleton\ ```c# //这个是C#原生单例模板类.适用于游戏数据管理器, 单例模式不允许New public class Manager : Singleton { public string myGlobalVar = "whatever"; } public class MyClass : MonoBehaviour { void Awake () { Debug.Log(Manager.Instance.myGlobalVar); } } ``` #### MonoSingleton\ ```C# /* * 继承自MonoBehaviour的单例模板.适用于整个游戏生命周期都存在的管理器. * 这个单例模板可以使用协程,参考自wiki.unity3d.com/index.php/Singleton. * 除了全局管理类,游戏中的局部功能的脚本禁止使用MonoSingleton,需要单例功能时使用Singleton + MonoBehaviour 代替. * MonoSingleton生命周期由其自身管理. * 一定不要在OnDestroy函数中直接访问Mono单例模式!这样会使Unity在Editor下生成一份单例,造成一些名其妙的bug. */ public class Manager : MonoSingleton { public string myGlobalVar = "whatever"; } public class MyClass : MonoBehaviour { void Awake () { Debug.Log(Manager.Instance.myGlobalVar); } } ``` 单例在使用前,先调用 Init() 函数进行初始化. 注销写在重载的UnInit()函数中,UnInit函数由单例自己控制. ### SoundManager #### 说明 1. 静态工具类, 使用调用 SoundManager.CallFunction( ) 即可. 2. 支持同时播放多个音效,不支持多个音乐.循环音乐. 3. 声音分为3类: music sound ui. 4. 声音的操作有4种:play/stop/pause/resume. 5. 自带声音Playerprefs固化:声音开关,音效开关,声音音量,音效音量,全局音量,UI音量. 6. 支持渐入渐出效果. 7. 全局和个别音量控制. 8. 音乐跨场景. 9. 同时支持2D 3D声音. 10. 支持随机范围播放. #### 注意事项 1. 将需要的音乐/音效名称 作为枚举 例如: Sound1.mp3 ,枚举为SoundType.Sound1. 2. 播放音效/音乐时,直接调用PlaySound(音效)/PlayUISound(UI)/PlayMusic(音乐)方法 3. 音乐音效文件存放在 StreamingAssets 文件夹中 结构为: Audio/Music|Sound 4. 不同平台打包时需要提供不同的声音格式: .ogg(Android / Standalone) .mp3(Android /IOS) 5. 音效和音乐的开启和关闭在改变时会自动更新到Playerprefs中. #### 代码示例 ```c# //3D声音调用示例 AudioClip audioClip = GetAudioClip(SoundType.soundTest); int soundID = SoundManager.PlaySound(audioClip,1f,false,targetTransform); Audio audio = SoundManager.GetAudio(soundID); audio.Set3DDistances(1f,10f); audio.audioSource.spatialBlend = 0.8f; ``` ### NGUIManager ## Editor ### FileTool ### GenerateScript ### GraphicTool ### ScriptObject ### Templates ## Utility ### AStarFor2D ### Debuger #### 说明 1.Debuger是一个Unity原生debug工具的增强版. 2.与原生Debug相比多了以下功能: 1)颜色打印 2)一键开关 . 3.为了解决代码定位问题,工具已经封装为dll. ### DOTween ### Easytouch ### JsonDotNet #### 说明 1.程序集版本 AOT用于手机平台 Standalone 用于PC平台​ ### NGUI ### Utils ## Feature ### FPSController ### Thrower ### Tilemap ## Tools ### Excel2CSV CSV Python处理工具 #### 说明 1.为了确保数据的唯一性, 修改数据以Excel(这是二进制)为主, CSV(这是文本格式,存在合并问题)不能修改 2. 处理流程为: Excel建表 --> 1.ExportToCSV --> 2.拷贝csv到客户端 ### MapData tilemap lua处理工具 ### SqliteTool sqlite命令行工具 ## ToDoList ### DataCenter #### Sqlite #### CSV #### Excel #### XML #### Protobuf #### PlayerPrefs #### ScriptObject #### MySql ​ ### GameManager ### SqliteManager ### FSM ### Lua热更新 ### AI ### AppManager ### SceneManager ### CameraManager ### TimeManager ​ ### PoolManager ​### NetworkManger ### ResourceManager ### EffectManager