第一次写博客,不足之处还望前辈指点:

   项目需求是需要用Unity制作船舰模型的爆炸图效果。我的思路是先把船舰上各个单元组件的位置记录下来,然后依次移动这些单元组件的位置,在复原该模型时,再把原来记录的单元组成模型位置还原出来。

首先,在Hierarchy面板新建一个GameObject,创建4个Sphere和一个Cube用来搭建一个小车模型((#^.^#)我家小车是球形轱辘哦);

第一步在Assets文件夹下面创建一个Scripts,然后添加一个DateVO和PartVO脚本

using UnityEngine; using System.Collections;[System.Serializable] public class PartVO {public Vector3 pos;public Vector3 rot;public Vector3 scale; }

第二步创建拖拽脚本Drag

using UnityEngine; using System.Collections; public class Drag : MonoBehaviour { private IEnumerator OnMouseDown() { Vector3 pos = Camera.main.WorldToScreenPoint(transform.position); Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y,pos.z)); while (Input.GetMouseButton(0)) { transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, pos.z))+offset; yield return new WaitForFijiaoxedUpdate(); } }}

第三步创建复原脚本ReaetPart

using UnityEngine; using System.Collections; using System; using System.IO;public class ResetPart : MonoBehaviour {string path;string s;GameObject part;// Use this for initializationvoid Start (){part = GameObject.Find("Part");path = Application.dataPath + "/PartMessage.json";} // Update is called once per framevoid Update () {if (Input.GetMouseButtonDown(1)){Reset();}}private void Reset(){if (!File.Exists(path)){throw new Exception("找不到当前的路径");}s = File.ReadAllText(path);DateVO date = JsonUtility.FromJson<datevo>(s);for(int i = 0; i < part.transform.childCount; i++){part.transform.GetChild(i).localPosition = date.parts[i].pos;part.transform.GetChild(i).localEulerAngles = date.parts[i].rot;part.transform.GetChild(i).localScale = date.parts[i].scale;}} }

最后我写了一个JSON存模型单元组件位置的脚本PartCreateMessage

using UnityEngine; using System.Collections; using System.IO; using UnityEditor;public class PartCreateMessage : MonoBehaviour {[MenuItem("Tools/CreateJSON")]static void WriteJson(){string path = Application.dataPath + "/PartMessage.json";GameObject obj = Selection.activeGameObject;if (obj.name != "Part"){throw new System.Exception("Selection Model");}DateVO date = new DateVO();for(int i = 0; i < obj.transform.childCount; i++){PartVO part = new PartVO();part.pos = obj.transform.GetChild(i).localPosition;part.rot = obj.transform.GetChild(i).localEulerAngles;part.scale = obj.transform.GetChild(i).localScale;date.parts.Add(part);}string s = JsonUtility.ToJson(date);File.WriteAllText(path,s);AssetDatabase.Refresh();} }

Unity 手动拆分和组装模型相关推荐

  1. Science Bulletin:上海植生所王二涛组发表基于绝对丰度的植物根际微生物群落“扩增-选择”组装模型

    文章目录 Science Bulletin: 基于绝对丰度的植物根际微生物群落"扩增-选择"组装模型 背景介绍 研究方法 结果与讨论 作者简介 王二涛 于楠 张学斌 王孝林 Ref ...

  2. UNITY 手动定制inspector

    UNITY 手动定制inspector using System.Collections; using System.Collections.Generic; using UnityEngine; u ...

  3. java字符串替换 数组,Java工具类-拆分字符串组装数组,替换字符

    Java工具类--拆分字符串组装数组,替换字符 >>>>>>>>>>>>>>>>>>> ...

  4. 详解Unity中的导入3D模型

    前言 三维模型可以表示任何现实世界中存在的物体,自然也可以表示任何游戏世界中存在的物体,比如地面,山川河流,花草树木,建筑,人物,都需要使用三维模型来表示.一般我们使用一些建模软件来建出游戏中需要的模 ...

  5. Unity抗锯齿,Unity3D模型花闪烁等效果优化。

    Unity抗锯齿,Unity3D模型花闪烁等效果优化. 最近在做全息投影项目,模型闪烁,锯齿明显,自己总结了一些优化方法. 方法一:在场景内摄像机上挂载如下抗锯齿脚本.摄像机改为Skybox或者Sol ...

  6. Unity动态加载3D模型

    Unity动态加载3D模型 在Unity中创建游戏对象的方法有 3 种: 第一种是将物体模型资源由 Project 视图直接拖曳到 Hierarchy 面板中: 第二种是在 Unity 3D 菜单 G ...

  7. access数据库拆分的用途_手动拆分 Access 数据库 | Microsoft Docs

    如何在 Microsoft Access 中手动拆分 Access 数据库 2020/5/22 适用于: Access 2007, Access 2003, Access 2002 本文内容 备注 O ...

  8. 3DMax切割、拆分(分离模型)

    3DMax切割.拆分(分离模型) 选中模型:选择边: 选择切割位置: 右键连接: 选择分离部分: 点击分离:命名保存 完成: 完整演示 选中模型:选择边: 选择切割位置: 右键连接: 选择分离部分: ...

  9. Unity 手动编译 Reload脚本 减少等待时间

    Unity 手动编译 Reload 脚本 这是个自定义reload domain工具,加快工作流,减少等待.测试版本是Unity2021,理论上来说2020以上都可. 脚本地址:UnityManual ...

最新文章

  1. 使用pytorch构建图片分类器
  2. Spring Boot 2.0 热部署指南
  3. MYSQL远程连接数据库
  4. STM32开发 -- CRC校验码
  5. Hook API (C++)
  6. tomcat jsp导入java_[导入]Tomcat JSP Web 开发中的乱码问题小姐
  7. python并发编程之多线程
  8. Scrapy-Link Extractors(链接提取器)
  9. 从零开始学ios开发(十四):Navigation Controllers and Table Views(上)
  10. go - const
  11. AntD Pro Footer自定义
  12. 服务器2003如何修复0,Windows Server 2003 SP2补丁无法安装解决方法(密钥无效)
  13. html保留数据库文本格式,以html格式显示数据库中的格式化文本(FLASK应用程序)...
  14. WHQL认证资讯:关于Windows硬件开发者仪表盘
  15. JVM: GC过程总结(minor GC 和 Full GC)
  16. mantis的安装配置(for windows)
  17. Anaconda配置新环境
  18. python numpy读取数据_Python numpy数据的保存和读取
  19. 【万能搜索】万能DFS之全排列(一)——普通算法
  20. 泉州数字平台让城市管理更“智慧” 数分钟“搞掂”

热门文章

  1. 调制解调器故障诊断与排除(5.0)
  2. PS制作漂亮的绿色水晶箭头图标
  3. 蚂蚁金服 mPaaS IDEA 插件实践Demo演示
  4. DCore应用案例(一):发布内容
  5. 读书心得——4点起床
  6. 通信的基本定义及其相关概念
  7. 2020,为抖音微信打工的一年
  8. 方便好用的在线抠图工具,你值得一试
  9. wordpress 网站迁移步骤
  10. 数据库面试题之:学生成绩查询