Unity3D Demo项目开发记录
前言
经过一段时间的学习与实际开发,unity3D也勉强算是强行入门了,正所谓好记性不如烂笔头,更何况本人并非专业从事unity3D开发,会一点C#但也并不熟悉,为了避免后期遗忘,因此特意整理了一个Demo项目,特此记录
本项目是一个简单的Unity学习项目,封装了一下简单、通用功能组件,适用于数据可视化展示
项目特色
1、封装了简单Camera镜头操作、镜头巡航脚步
2、封装单击、双击事件同时绑定脚本(unity3D 游戏物体同时绑定单击、双击事件)
3、封装永远面向屏幕、跟随镜头旋转缩放,缩放大小不变的Billboard公告牌脚本(unity3D 自定义公告牌 )
4、利用LineRenderer,封装自定义流动线路脚本
5、封装自定义弹窗,带遮阴层,可拖动
6、项目用到BestHTTP插件,网传最好用的http插件
7、项目用到XCharts插件,丰富图表展示足够满足需求
8、项目用到DoTween插件,在代码中可轻松实现各种动画效果
项目结构
整体是这样:大目录下进行分组,对应的资源分组存放

运行预览
效果先睹为快,具体介绍在下方,按功能点进行详情介绍

功能详解
背景图
需要单独创建一个摄像头,并只看背景图片,这样才能跟主摄像头相互不影响
背景图片是从网上找的素材,简单的PS了一下,图片风格,黑中带蓝、蓝中带紫、紫色中透着白光,四周偏暗,中间偏亮,也就网传“五彩斑斓的黑”能够与之一拼,更能凸显3D主体对象

镜头操作
包括镜头缩放、鼠标左键进行上下左右旋转,同时可定点巡航、以及指定路线巡航
定点巡航,给定一个坐标点,镜头将会围绕目标点巡航360度

定线巡航,给定多个坐标点,镜头就会依次推进到指定位置,当然了,路线的选择决定了巡航的最终效果,像我这里的坐标点就选得不行,3D对象都跑出镜头外了...

单双击事件绑定
unity3D 游戏物体同时绑定单击、双击事件,具体实现看之前的博客:unity3D 游戏物体同时绑定单击、双击事件

自定义公告牌
永远面向屏幕、跟随镜头旋转缩放,缩放大小不变的Billboard公告牌,具体实现看之前的博客:unity3D 自定义公告牌

流动线路
利用LineRenderer进行画线,材质球设置好流动的光点背景图,封装好脚本,在update中修改材质球的mainTextureOffset值,以一定的速度进行增加或减小,从而达到光点流动的效果,同时利用贝塞尔曲线(参考博客:https://www.cnblogs.com/msxh/p/6270468.html)实现一定的弧度弯曲效果

自定义弹窗
自定义弹窗,带遮阴层,弹出弹窗时鼠标无法操作对象(3D、按钮等),同时左键长按标题栏可拖动弹窗,封装了四个简单弹窗:alert警告框,affirm确认框,scrollBox滚动框,msg提示框
可输出普通文本,也可以操作追加3D对象(如下面的模拟监控功能)

XCharts图表
一款基于`UGUI`的功能强大、易用、参数可配置的数据可视化图表插件。支持折线图、柱状图、饼图、雷达图、散点图、热力图等常见图表。
XCharts主页:https://github.com/monitor1394/unity-ugui-XCharts
插件自带一个demo场景,各种图表都有例子

拿过来改一改就能用

BestHTTP请求
BestHTTP在网上一搜,好多都说是最好用、最强大的HTTP插件,有各种强大的骚操作,具体的自行百度了解,因为我们现在用不上,简单的http get、post请求,以及json转C#对象就够我们用了
插件同样自带demo场景,里面有各种例子

http请求,发送get、post(PS:如果是打包成WebGL,由于浏览器的同源策略,会存在跨域问题,这一点需要注意),比如我们在程序一运行就发起get请求获取配置文件信息,并在UI面板中设置


Panel面板
一个带背景图的简单基础预制体,可作为其他UI面板的基础


DoTween动画
强大的动画插件,更多介绍查看官网:http://dotween.demigiant.com/documentation.php
项目中常用的就UI面板的进场、离场动画、以及3D对象的动画,比如我们这里的标题、按钮组、左右UI面板都有一个进场动画

模拟监控
使用自定义alert弹窗弹出,目前是直接播放mp4格式视频,做这个组件,主要是为后续接入视频监控做储备
注:unity自带的视频播放组件存在一些问题,有时候会导致程序直接崩掉,我就经常碰到,比如在代码中修改视频url,经常卡死程序自动退出...

WebGL打包
Edit -> Project Serrings -> Quality 进行WebGL打包参数设置

File -> Build Settings,添加需要打包的场景,选择WebGL,Build,选择文件夹打包,接下来就是等待了,时间看电脑配置,配置越好打包速度越快

后记
开发中,有些功能我们没必要重复造轮子,网上可以找到很多插件,各式各样的功能都有,比如这个网站:http://www.6m5m.com/index.php
不过作者钱包五行缺钱,平时学习时只能下载0金币0积分的资源....,但如果是碰到项目能用的上,又是比较必要的插件,可以让经理或者公司去充值购买
Unity 3D Demo项目暂时记录到这,后续再进行补充
代码开源
代码已经开源、托管到我的GitHub、码云:
GitHub:https://github.com/huanzi-qch/unity-demo
码云:https://gitee.com/huanzi-qch/unity-demo
Unity3D Demo项目开发记录的更多相关文章
- Anytime项目开发记录0
Anytime,中文名:我很忙. 开发者:孤独的猫咪神. 这个项目会持续更新,直到我决定不再维护这个APP. 2014年3月10日:近日有事,暂时断更.希望可以会尽快完事. 2014年3月27日:很抱 ...
- demo项目开发(Python+flask+mysql+redis只包含后端接口)
[demo项目开发需求] 用户信息管理,可以注册.登录.添加用户.删除用户 注册:任何用户可以注册,对用户提交的注册信息进行校验,返回对应的信息,其中: 用户名:必填,唯一 密码:必填,只能6-12位 ...
- TMS320F28335项目开发记录1_CCS的使用介绍
CCS使用介绍 一.前言 本系列文章记录本人实际项目开发时对ti的DSP28335,以及CCS开发环境等的学习与记录,相对于2812来说,28335的资料还是比較少的,只是原理是相通的,28335说白 ...
- Anytime项目开发记录4
做事情列表,我在程序中命名为“正在做”. 这是一个Fragment,应用的主页面,由一个MainActivity加上DoingListFragment和PersonFragment组成.PersonF ...
- Anytime项目开发记录2
注册,登陆于密码找回.这是这次记录的主要内容. 首先,我们来看类图: 因为一直在改,所以与第二篇介绍项目框架时的图会有一些不一样. 代码都是非常简单的. 由于在注册和登陆这里,需要弹出一些对话框告诉用 ...
- TMS320F28335项目开发记录5_28335之CCS编程基础
CCS开发环境已经为我们封装好了很多片内外设寄存器的结构体,我们仅仅须要包括对应的官方的头文件就能够使用了,那么它的内部详细是怎样实现的呢? 以下来一个典型的样例: 1.使用结构体和联合体 A.用st ...
- 用vue前后端分离项目开发记录
一:软件安装 1.1 检测node 是否安装 1.2 安装淘宝镜像 cnpm 1.3 安装vue-cli 1.4 检查是否安装vue-cli脚手架成功 1.5安装webpack 模块管理工具 二:创建 ...
- Anytime项目开发记录3
应用想要做的好,反馈必然少不了~哈哈~ 用户的反馈.意见.建议,甚至是谩骂,都是对项目的反馈. 如果一个应用没有听取用户的反馈,那么应用会离着用户越来越远.懂得用户要什么是一回事,听得到用户的反馈,则 ...
- Anytime项目开发记录1
关于Android APP 应用设计,我并没有接受过系统的学习. 下面,是按照我一直以来的方法来进行编辑. 由于在程序开始之前并没有画类图,这里简单的讲述一下程序是如何设计的. 自己实现了一个Appl ...
随机推荐
- matplotlib添加子图(拼图功能)
我们已经知道,matplotlib是python中的一个十分好用的作图库,它的简单的使用方法可以在之前的随笔中找到.传送门:https://www.cnblogs.com/chester-cs/p/1 ...
- 技术周刊 · Lighthouse 测试报告生成
登高远眺 天高地迥,觉宇宙之无穷 基础技术 Lighthouse 测试内幕 文章分享了网易云音乐前端性能监控平台使用 Lighthouse 的实践经验,介绍了 Lighthouse 的测试流程.内部模 ...
- 淘宝官网css初始化
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend ...
- MFC exe文件生成的图标更改方法
MFC exe文件生成的图标更改方法 https://blog.csdn.net/txwtech/article/details/92980545
- selenium(2)-selenium针对浏览器的操作有哪些
对浏览器有哪些操作 最大化.最小化浏览器 控制.获取浏览器大小 获取当前标签页title.url 前进.后退.刷新 执行js语句 打开.关闭,切换新标签页 滚动页面 上传附件 鼠标悬停 对话框的定位方 ...
- Appium 自动化实例代码
自动化连接 B站 开始 如果下载node.js 的话 可以检查一下appium环境 命令行: appium-doctor 如果没有 可以安装 appium-doctor :npm install ...
- #PHP 类的多继承实现之 traits.md
TRAIT PHP本身是并不支持多继承的,也就是,一个类只能继承一个类,为了满足业务需求,后来有了一些解决方法,例如,链式继承,B继承A,然后C继承B,这样,C就同时继承了AB, 此外还有接口,因为接 ...
- Centos 7使用systemctl补全服务名称
使用jsw将程序打包成服务后,发现不能使用service + 服务名前几个字母 + tab 快捷键补全服务名,但是tab键可以补全文件夹名,翻阅了各个文档后,最终还是找到了问题所在. 本人安装的是Ce ...
- JavaWeb网上图书商城完整项目--27.注册页面之注册按钮图片切换实现
我们要实现立即注册这个按钮,光标获得焦点是一张图片,光标失去焦点的时候是另外一张图片 我们需要在文档加载完成之后,设置该事件hover事件 hover(over,out)这是jQuery的一个模仿悬停 ...
- SqlServer2016 startengine错误的解决方式整理
因为某些需要,最近在安装SqlServer2016,但总是安装失败,按照网上各路大佬的解决方案都没有成功.报错提示为两个:无法获取数据库引擎句柄,无法恢复数据库引擎服务.按照网上做法,使用admini ...