# HKUnityTools **Repository Path**: DreamerLin96/hk_-unity-tools ## Basic Information - **Project Name**: HKUnityTools - **Description**: Unity的工具集(基于QFramework和Dotween) - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 17 - **Created**: 2023-09-09 - **Last Updated**: 2025-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HK_UnityTools ## 介绍: 我们团队在Unity项目中积累的工具集,包含两部分:编辑器功能、运行时功能。目的在于优化团队制作及开发的工作流,以及减少相关制作和开发的工作量。 本项目部分模块依赖于:Dotween和QFramework,如有问题可联系:QQ 511919078 \ **(号外号外!团队在青岛,主要做VR、AR、MR、虚拟仿真项目,目前招开发小伙伴,有意向的可发私信或QQ!)** ## 编辑器功能: ### 0. HK_GlobalSetting: 全局设置面板。 *** ### 1. HK_SmartCopy: 对选中的物体进行智能复制,按Ctrl+Shift+D进行复制(只能且必须选中一个物体),第一次复制时会记录便宜的位移、旋转、缩放,之后再次按Ctrl+Shift+D可根据偏移量增量连续进行复制(借鉴Maya中的复制功能)。 *** ### 2. HK_MakeGroup: 对选中的物体进行打组操作。 *** ### 3. HK_HierarchyPro: 在Hierarchy面板中显示物体的:激活状态、某些组件图标、Tag名称等。 *** ### 4. HK_ShortCutsExtension Unity中部分MenuItem的快捷键拓展。 *** ### 5. HK_ReName: 该工具中包含了:根据指定字符串查找物体、替换选中物体名称中的指定字符串、对选中物体进行重命名。 *** ### 6. HK_RandomRotOrScale: 对选中的物体进行随机旋转和缩放。 *** ### 7. HK_DotweenEaseShow: (依赖Dotween)该工具可对Dotween内置Ease缓动动画进行预览,可查看所有缓动类型的动画曲线及相应预览动画。 *** ### 8. HK_CreateGoByPath 根据LineRenderer路径生成模型,可用于数字城市项目中如生成沿路路灯、公共座椅等模型。 *** ### 9. HK_AutoSwitchToUTF8: 自动将新建的脚本,转为UTF-8编码,防止脚本在Inspector面板预览时产生乱码。 *** ### 10. HK_WebsiteCollection Unity开发相关站点的集合。 *** ### 11. HK_Foldup(Attribute): 将脚本中的序列化变量,在Inspector面板中进行折叠收纳整理。 *** ### 12. HK_ReadOnly(Attribute): 将脚本中的序列化变量,在Inspector面板中变为ReadOnly,只能看不能改。 *** ### 13. HK_OverWrite: 对Unity中的某些功能进行重写,改善原本Unity默认功能中不大合适的地方,提高项目开发效率。目前包含:Image、Text组件重写,新建时默认取消勾选RaycastTarget,因为绝大多数时候这两个组件并不需要RaycastTarget,这样可以提高运行时效率。 *** ### 14. HK_TagAndLayerView: 场景中Tag和Layer的管理工具,对项目中所有的Tag标签及Layer层级进行显示,显示当前场景中对应Tag标签(或Layer层级)包含的物体数量,且可进行选择。 *** ### 15. HK_HierarchySearch: 根据条件(名字、组件),对Hierarchy中选择的物体进行查询并重新选定。 ## 运行时功能: ### 1. HK_FreeCam: **功能描述:** > + 漫游摄像机控制脚本,主要用于场景编辑、开发期间,测试观察使用; + 运行时可通过鼠标键盘,控制相机移动、旋转、缩放,方便开发及制作人员对场景进行自由观察; + 开发测试结束后可直接将该组件移除。 > **使用方式:** + 将该脚本添加到Main Camera上,点击运行后即可使用; + 按住WASD键进行前后左右移动,QE键进行上下移动; + 按住鼠标右键进行视角旋转; + 按住Shift进行位移加速; + 按住鼠标右键,旋转视角 + 滚动鼠标滚轮,视野缩放; > **外部依赖:** + 无 *** ### 2. HK_TargetCam(引入了QF框架): **功能描述:** > + Camera多目标切换管理工具,可控制Camera在多个Target之间切换; + Target分为三种:RotTarget、AreaTarget、FollowTarget; + 切换至RotTarget目标点后,相机可围绕Target进行旋转、缩放操作; + 切换至AreaTarget目标点后,相机可在Target标识区域进行前后左右平移、缩放操作; + 切换至FollowTarget目标点后,相机可跟随目标点移动,且可围绕移动的Target进行旋转、缩放操作; + 可根据Target的枚举值、名称进行切换,切换时可更改Camera缩放速度、移动速度; + TargetCamera下有个Mask子物体,其材质球为 BuildIn 渲染管线,若用URP或HDRP渲染管线,需手动调整Mask的shader。 > **使用方式:** + 在本项目的 Architecture 中注册 IHK_TargetCamSystem; + 将 HK_TargetCamController 中的 Architecture 修改为本项目的 Architecture; + 将 TargetCamera 预设体,拖入场景中,替换默认Camera; + 根据需求,在场景中添加 RotTarget、AreaTarget、FollowTarget(可从预设体中拖入场景中); + 编辑 HK_RotTargetItem、HK_AreaTargetItem、HK_FollowTargetITem 组件对应的:枚举标记、名称(可选)、默认距离等属性; + 调整 TargetCamera 物体上的 HK_TargetCamCtrl 组件,对其进行初始化参数编辑; + 若 HK_TargetCamCtrl 组件指定了 initTarget (初始化目标点),则运行后 TargetCamera 会自动转换到 initTarget 对应的目标; + 发送 CMD_ChangeCamTarget 指令(并传入对应参数)进行 Camera 目标切换; + 发送 CMD_ChangeCamTarget 指令时,可传入 isFlash 及 isBlink 参数,控制 Camera “闪现”到对应目标; + 发送 CMD_ChangeCamTarget 指令时,可传入 delayTime 参数,控制 Camera 延时切换到对应目标; + 发送 CMD_SetCameraState 指令时,可传入 isCanCtrl 参数控制相机是否可移动、旋转、缩放; + 订阅 Event_SwitchTargetBegin 事件,当目标切换开始时接受到该事件; + 订阅 Event_SwitchTargetEnd 事件,当目标切换完成后接受到该事件; + 具体用法,可参考 Test_UseTargetCam 脚本。 > **外部依赖:** + Dotween、ActionKit *** ### 3. HK_RoamingCam(引入了QF框架): **功能描述:** > + PC端、WebGL端、Android端虚拟展厅类体验相机控制管理工具; + 支持通过鼠标点击、手指触摸两种方式进行交互; + 视角控制分为:第一人称漫游、三维俯视漫游、鸟瞰正交漫游三种模式; + 第一人称漫游(RoamView):通过点击地面标识点进行位移(依赖Unity Navigation); + 鸟瞰正交漫游(BirdView):上帝视角进行观察,相机为 Orthographic + 三维俯视漫游(ThreeDView):上帝视角进行观察,相机为 Perspective > **使用方式:** + 在本项目的 Architecture 中注册 IHK_RoamingCamSystem; + 将 HK_RoamingCamController 中的 Architecture 修改为本项目的 Architecture; + 在场景中设置好Navigation Static,并进行 Navigation烘焙,生成合适的NavMesh; + 在场景中指定 RoamView 使用的 Point点位(附带HK_Point脚本),并设置好LookAtType; + 在场景中指定好 BirdView和ThreeDView 使用的 OverlookPos及RotAroundTarget; + 将HK_RoamPlayer预设体放入场景中,并进行初始化设置; + 具体用法,可参考Test_UIRoamCamCtrl 脚本; > **外部依赖:** + Dotween *** ### 4. HK_FirstPersonCam(引入了QF框架) **功能描述:**j > + PC端的第一人称视角控制相机; + 支持通过鼠标、键盘进行第一人称角色控制; > **使用方式:** + 在本项目的 Architecture 中注册 IHK_FirstPersonCamSystem; + 将 HK_FirstPersonCamController 中的 Architecture 修改为本项目的 Architecture; + 将场景中需碰撞的物体(如地面等),设置好碰撞体,并设置好Layer; + 将 FirstPersonPlayer 预设体,拖入场景中; + 在 FirstPersonPlayer 预设体的 HK_FirstPersonCtrl 组件中,设置好 GroundMask 层级; + 设置完成后即可通过鼠标、键盘进行操控,按住鼠标右键控制角色旋转,按WASD键控制角色移动; + 在表现层脚本中通过发送 CMD_ChangeFirstPersonPos 指令(并传入对应参数),可根据目标切换位置; + 参考 Test_FirstPlayerCamChangePos 进行位置切换设置; > **外部依赖:** + Dotween *** ### 5. HK_TaskSystem(引入了QF框架): **功能描述:** > + 任务管理系统(通过配置文件对任务流进行配置及编辑); + 可在Unity编辑器中对任务流进行编辑,编辑后在运行时进行使用。 > **使用方式:** + 在本项目的 Architecture 中注册 IHK_TaskSystem; + 将 HK_TaskSystemController 中的 Architecture 修改为本项目的 Architecture; + 本系统分三个层级:任务链 TaskList、任务 Task、条件 Condition + 对外方法有四个:
StartNewTaskList(string taskDataName) //开启 新的 任务链
BreakOffTaskList() // 中断 当前 任务链
AchieveCondition(HK_ConditionType condition) // 达成指定条件
StopTaskAudio() // 停止当前播放的任务语音
+ 推荐使用Command指令来使用TaskSystem,四个对外方法分别对应四个Command:
CMD_StartNewTaskList :开启新的任务链指令
CMD_BreakOffTaskList :中断当前任务链指令
CMD_AchieveCondition :达成指定条件指令
CMD_StopTaskAudio :停止当前播放的任务语音指令
+ 外部可监听事件有六个:
Event_TaskListStart // 任务链开始 事件
Event_TaskListFinish // 任务链结束 事件
Event_TaskListBreadOff // 任务链中断 事件
Event_TaskStart // 任务开始 事件
Event_TaskFinish // 任务结束 事件
Event_ConditionAchieve // 条件达成 事件
> **外部依赖:** + ActionKit、AudioKit *** ### 6. HK_SimpleDialogSystem(引入了QF框架): **功能描述:** > + 简易对话系统(通过CSV配置文件对话进行配置及编辑); + 在Excel中对对话流程进行编辑,编辑后另存为CSV文件,放在Resource文件夹下; + 需确保CSV文件为UTF-8编码格式; + 目前支持3D的对话UI,主要为适配VR开发; > **使用方式:** + 在本项目的 Architecture 中注册 IHK_SimpleDialogSystem; + 将 HK_SimpleDialogController 中的 Architecture 修改为本项目的 Architecture; + 使用Command指令来使用HK_SimpleDialogSystem,三个指令分别为:
CMD_StartNewDialog3D :开启新的3D对话指令
CMD_EndCurDialog3D : 停止当前的3D对话指令
CMD_PlayForwardDialog :继续推进对话指令
+ 外部可监听事件有三个:
Event_DialogStart // 对话开始 事件
Event_DialogEnd // 对话结束 事件
Event_OptionChoiced // 选项做出选择 事件
> **外部依赖:** + Dotween *** ### 7. HK_UGUITools: #### 7.1 HK_CollapsibleMenu(引入了QF框架) **功能描述:** + 折叠菜单UI预设,可直接推拽至Canvas下进行适用。 + 通过改1、2、3级MenuItem的预设体,适配不同的UI。 + MenuItem按钮点击后发送指令。 #### 7.2 HK_UIOverride **功能描述:** + 重写的UGUI Button组件:
通过在Inspector面板中修改AudioType,播放对应的Button点击音效(需注册对应的音效播放事件)。
通过在Inspector面板中修改AnimType,启用相应的Button动效(使用Dotween,可自行在脚本中修改)。
+ 重写的UGUI Toggle组件:
通过在Inspector面板中修改AudioType播放对应的Toggle点击音效(需注册对应的音效播放事件)。
+ 重写的UGUI Dropdown组件:
通过在Inspector面板中修改AudioPressType和AudioSelectType,播放对应的点击及选中音效(需注册对应的音效播放事件)。 #### 7.3 HK_SlidePage **功能描述:** + 图片轮播功能,将预设体拖拽到Canvas下,修改部分参数配置即可使用。
#### 7.4 HK_UIFramesAnimator **功能描述:** + UI动画序列帧播放控制功能,可添加在UGUI的Image组件物体上,序列帧分为:初始时序列帧、循环序列帧、结束时序列帧。 *** ### 8. HK_Video: 在Unity中进行视频播放的功能模块,对VideoPlayer进行了封装。 *** ### 9. HK_SimpleTask: (引入了QF框架)简单的任务管理系统,通过枚举定义“任务流程”及“任务名”,可应用在较为简单的任务流程中。 *** ### 10. HK_SimpleQuiz: (引入了QF框架)简单的考题功能,目前包含了:单选题、多选题、判断题,可通过Json或Excel文件对题库进行配置其中通过Excel配置的方式只支持PC端。 *** ### 11. HK_SplitAnim: 模型拆分动画控制功能,可在Scene视窗中对模型动画目标位置进行设置,方便进行管理。 *** ### 13. HK_Tips: 三维场景中悬浮提示标签的工具。 *** ### 14. HK_FileLoad: (引入了QF框架,该模块仅可用于PC端)从电脑中读取图片、视频,并存储在StreamingAssets中。 *** ### 15. HK_LoginRegister: (引入了QF框架)用户注册登录功能模块,Server端是NodeJs的,客户端为Unity。 ***