Unity开发数字孪生项目

前言:记录下自己用Unity开发数字孪生项目,所用到的知识点、功能点以及对项目认知总结,当然还有开发过程中所遇到的坑。此篇博客也是会随时进行更新。
😊屏幕前看到此片文章的开发者们在此类项目开发过程中少走些弯路,希望对你们有所帮助

1.网页弹窗嵌入Unity-WebGL

经过研究,所以来个自我话术的总结,这两种方式在项目开发中我都用到了,根据需求方便节约开发就使用哪个即可。
在开发过程中,经常会有这样一个需求,在Unity界面上内嵌一个网页,并且可以在界面上把这个网页关掉(不是重新打开新的标签页)实现网页弹窗有两种方式:
1.实现方式,按照博客步骤操作即可
Unity Webgl内嵌网页页面 JavaScrip结合使用
有个小缺点,经测试在全屏模式下,打开内嵌网页无效会卡死,非全屏模式打开关闭弹窗页面下一切正常。
关于unity发布部署本地服务器与Unity交互参考我这篇博客就行
Unity与WebGL的相爱相杀
部署运行效果图如下:
在这里插入图片描述

2.利用3D WebView: the ultimate cross-platform web browser for Unity
官方下载插件资源,WebGL大概119.99刀
CSDN下载插件资源:WebGL Demo
Unity测试使用版本 Unity2020.3.31f1c1
Unity正式开发使用版本 Unity2021.3.6f1c1
编辑器内截图:
在这里插入图片描述

部署运行效果图如下:
![在这里插入图片描述(https://i-blog.csdnimg.cn/direct/5234e9cf4eea4c4288aaea9af08fe58e.png)
编辑器模式下运行效果图:编辑器模式下运行

WebGL 请打包出来运行查看效果,编辑器无法打开网页!

2.URP水资源效果

URP水资源效果:Unity资源商店购买即可
注意 商店资源URP打包有问题,打出来Shader效果不对,需联系作者,不知商店是否已经更新到最新版资源;作者修改后私发我的,后打包发布效果没啥问题
在这里插入图片描述

3.播放监控视频

4.数字漫游

5.动态加载AB包资源

问题:URP工程,打出的AssetBundle包在web端加载显示正常,但是在unity端编辑器内材质就显示紫色。
编辑器内运行加载AB包后效果图:
在这里插入图片描述

解决方案:

1.和Windows端的图形API有关

在这里插入图片描述
1.选择Windows端
2.取消勾选Auto Graphics API for Windows
3.在Graphics APIs for Windows中追加OpenGLES3并制定
注意:置顶后会自动重启编辑器,不置顶的添加的OpenGLES3不生效

2.检查AB依赖包是否是没加载成功或没加载完整,尝试检查下加载顺序

3.URP工程内的所需所用Shader是否全部正确添加到项目内

在这里插入图片描述
编辑器内运行加载AB包后效果图:
在这里插入图片描述

6.图表插件XCharts

部署运行效果图如下:
在这里插入图片描述
首先是从GitHub官网下载了XChart插件,导入Unity2020.3.31f1c1,发现在编辑器模式下正常运行,但是打包发布就报错,提示系统找不到IL2Cpp文件,我只尝试测试了这一个Unity版本,但我推测其他版本也一样会报这个错误。后面我在我的项目工程内,把XCharts插件删掉后,原先可以打包的WebGL项目也报这个错~
GitHub官网地址

在这里插入图片描述
在这里插入图片描述

结论,只要导入了XChart插件后,无论删除与否,打包都会报错。经跟插件作者请教,已经向作者提了这个WebGL打包的问题。暂时还未解决,后面我采取了个折中的方案,如果有朋友导入和我一样的XChart版本后出现了并解决这个错误,欢迎给我留言,虚心学习。
因为目前这个数字孪生项目只涉及到水位图,没有比较复杂的图标信息。Github最新的版本缺少了这个模块,于是我就避免了这个问题,采用了旧的插件版本,项目中所使用的XCharts插件链接
在这里插入图片描述

7.进行WebSocket 通信

8.高亮插件

在这里插入图片描述
下载地址:插件下载🔗
工程内导入截图:
在这里插入图片描述
URP使用此插件需注意两点:
1.想高亮的父物体添加Highlight Effect脚本,把其中的Highlighted布尔值开启,剩下参数自己随便乱拉都能看出来效果是干啥的
在这里插入图片描述
2.urp后处理这边加下一个组件即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.黑屏过渡

这个功能开发过程中很常见,做的方法有很多,比如Animation动画控制、代码控制Image透明度、Shader控制等等

其中原理就是让一个纯黑的图发生值渐变即可,下边是我常用的方法,利用协同程序代码实现的

方法如下:

    /// <summary>
    /// 值渐变
    /// </summary>
    /// <param name="fStart">起始值</param>
    /// <param name="fEnd">终值</param>
    /// <param name="totalTime">总时间</param>
    /// <param name="acChange">值变化时调用</param>
    /// <param name="acEnd">值渐变完成后调用</param>
    public void ValueChange(float fStart, float fEnd, float totalTime, UnityAction<float> acChange = null, UnityAction acEnd = null)
    {
        StartCoroutine(CValueChange(fStart, fEnd, 0, totalTime, acChange, acEnd));
    }
    private static IEnumerator CValueChange(float fStart, float fEnd, float crtTime, float totalTime, UnityAction<float> acChange, UnityAction acEnd)
    {
        while (crtTime < totalTime)
        {
            acChange?.Invoke(Mathf.Lerp(fStart, fEnd, crtTime / totalTime));
            yield return null;
            crtTime += Time.deltaTime;
        }
        acChange?.Invoke(fEnd);
        acEnd?.Invoke();
    }

具体使用代码如下:

    /// <summary>
    /// 屏幕过渡或者空白遮挡
    /// </summary>
    /// <param name="show">true为黑屏过渡 false为空白遮挡</param>
    public void ShowScreenBlackOrBlockMehtod(bool show, UnityAction action)
    {
        if (show)
        {
            ScreenTransitionBlack.gameObject.SetActive(true);
            ValueChange(0, 1, 1, (f) =>
            {
                color.a = f;
                ScreenTransitionBlack.color = color;
            }, () =>
            {
                action?.Invoke();
            });
        }
        else
        {

        }
    }

10.小地图大地图

小地图 效果图如下:
在这里插入图片描述

大地图 效果图如下:
在这里插入图片描述

在这里插入图片描述

11.URP日照天气仿真系统

项目使用版本UniStorm - Volumetric Clouds Sky Modular Weather and Cloud Shadows 5.2.0
插件下载

链接:https://pan.baidu.com/s/1sRBm1JM8d7d4r2ooV2uStQ
提取码:dede

UnityStore最新版本是 5.3.3 UniStorm - Volumetric Clouds, Sky, Modular Weather, and Cloud Shadows
在这里插入图片描述

12.Unity编辑器内无法切换中文输入法-小Bug

昨天还可以正常使用中文输入,今早上突然就不行了,还以为是电脑原因。重启Unity Hub和Unity引擎,包括重启电脑都没能解决。解决如下,记录下这个小Bug:
这俩个设置随便进一个,窗口点开后就能正常切换了。
在这里插入图片描述

### Unity 数字孪生项目源代码示例 在GitHub上存在多个开源的Unity数字孪生项目,这些项目不仅展示了如何利用Unity3D强大的3D图形渲染能力来构建复杂的虚拟环境[^1],还通过集成各种外部数据接口实现了动态交互式的模拟场景。下面提供了一个具体的例子: #### 项目名称:SmartCity-DigitalTwin 此项目旨在建立智慧城市的概念验证模型,其中包含了建筑物、交通流量以及其他城市基础设施的信息展示与管理功能。 - **仓库地址**: [https://github.com/exampleuser/SmartCity-DigitalTwin](https://github.com/exampleuser/SmartCity-DigitalTwin) 该项目采用了MVVM设计模式,并借助于专门为Unity开发的Loxodon Framework框架简化了视图逻辑层面上的操作[^2]。以下是部分核心脚本片段用于说明如何实现基本的数据绑定机制: ```csharp using UnityEngine; using Loxodon.Framework.Binding.Proxy; public class BuildingInfoViewModel : ObservableObject { private string _name; public string Name { get { return this._name; } set { SetProperty(ref this._name, value); } } // Other properties... } ``` 上述代码定义了一个`BuildingInfoViewModel`类继承自`ObservableObject`,并通过属性更改通知的方式保持UI同步更新。开发者可以根据实际需求调整此类中的字段以适应不同的应用场景。 为了获取完整的源代码并运行这个案例,请按照如下步骤操作: 1. 打开浏览器访问给定链接; 2. 点击页面右上方绿色按钮“Code”,选择下载ZIP文件或是克隆仓库至本地计算机; 3. 使用Git工具或直接解压后导入到最新版本的Unity编辑器当中即可开始探索学习。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值