关于Unity 如何与Blazor Server结合

一、介绍

最近工作中有`Unity`与`Blazor Server`结合的需求,在网上找了一圈,发现这方面的资料比较少,特此写下这篇记录一下自己的实现过程,希望可以帮到有需要的朋友。(下方多图预警)

OS Version : windows 11

Unity Version: 2021.3.23f1c1

Blazor Server : net 7.0

二、实现步骤

第一步 准备Unity项目

创建一个Unity 项目

​ 然后得到下面的Unity项目

第二步 Unity项目发布设置

​ 点击Unity 编辑器顶部菜单栏 文件 > 生成设置

​ 点击选择< WebGL >点击对话框右下角<切换平台> , 并等待平台切换完成

切换完成状态如下图,可以看到有黄色字体警告提示  **为了生成播放器,请转到播放器设置中解决“颜色空间”与当前设置之间的不兼容问题**

点击上图对话框左下角的**<玩家设置>**按钮来到设置界面,进入**<玩家>**菜单,选择**< WebGL >**栏,展开**<其他设置>** , 看到**<渲染>** 下的**<颜色空间>**

​ 将<颜色空间>线性改成伽马 ,并等待切换成功,做完这一切后收起 <其他设置>

​ 展开<发布设置>项 ,勾选解压缩回退 ,勾选之后关闭设置对话框, 到此 , 发布设置设置完成

第三步 发布Unity 项目 为 WebGL

​ 做完上一步发布的前期设置之后,接下来就可以开始发布Unity 项目啦,点击 Build Settings 对话框右下角的<生成>按钮

​ 点击<生成>按钮之后会弹出下列对话框让你选择一个发布的路径

​ 我本人是习惯于在Unity的项目根目录下创建一个Build 文件夹作为生成路径,读者可以按照个人习惯放置在其他路径,创建完Build文件夹之后,选择它作为发布路径,然后等待生成完成即可

​ 生成成功后的Build 文件夹内容如下,至此,生成步骤完成

第四步 Blazor Server 准备

​ 创建一个net7.0 的 Blazor Server项目

​ 在Program.cs中进行配置,代码如下

using BlazorApp6.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web; var builder = WebApplication.CreateBuilder(args); // Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>(); var app = builder.Build(); // Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
} //------------------将Unity作为静态文件引入------------------------------------------
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath, "BlazorServerTest")),
ServeUnknownFileTypes = true,
RequestPath = "/unity"
});
//-----------------------------------------------------------------------------------
app.UseRouting(); app.MapBlazorHub();
app.MapFallbackToPage("/_Host"); app.Run();

​ 做完如上配置之后,将刚刚在第三步中发布的Build文件夹拷贝到Blazor Server的项目根目录下,并修改目录名称为 BlazorServerTest,做完这步之后至此第四步完成

第五步 最终效果

​ 做完上述四个步骤之后,启动Blazor Server项目,在地址栏输入 http://localhost:{port}/unity/index.html 即可看到Unity画面

三、总结

​ 本文通过将Unity 生成成WebGL,并通过静态文件的方式引入了Blazor Server 当中,完成了Blazor Server和Unity的结合,这篇博客是本人写的第一篇博客,如有不对的地方,请大家指教。

关于Unity 如何与Blazor Server结合的更多相关文章

  1. 使用Blazor Server 线路处理程序 (circuit handler)跟踪打开的SignalR连接

    Blazor服务器允许定义线路处理程序(circuit handler)代码,该处理程序(handler)允许在更改用户线路状态时运行此代码. 线路处理程序(circuit handler)是通过从C ...

  2. [Asp.Net Core] 为什么选择 Blazor Server Side (一) 快速实现图片验证码

    关于Blazor 由于在国内, Blazor一点都不普及, 建议读者翻看我之前写的随笔, 了解Blazor Server Side的特点. 在一段时间内, 我会写一些解说分析型的 "为什么选 ...

  3. [Asp.Net Core] 关于 Blazor Server Side 的一些杂项, 感想

    在2016年, 本人就开始了一个内部项目, 其特点就是用C#构建DOM树, 然后把DOM同步到浏览器中显示. 并且在一些小工程中使用. 3年下来, 效果很不错, 但因为是使用C#来构建控件树, 在没有 ...

  4. [Asp.Net Core] Blazor Server Side 扩展用途 - 配合CEF来制作客户端浏览器软件

    前言 大家用过微信PC端吧? 这是用浏览器做的. 用过Visual Studio Code吧? 也是用浏览器做的. 听说, 暴雪客户端也包含浏览器核心?? 在客户端启动一个浏览器, 并不是什么难事了. ...

  5. 开源 一套 Blazor Server 端精致套件

    Blazor 作为一种 Web 开发的新技术已经发展有一段时间了,有些人标称 无 JS 无 TS,我觉得有点误导新人的意味,也有人文章大肆宣传 Blazor 是 JavaScript 的终结者,是为了 ...

  6. ASP.NET Core Blazor 初探之 Blazor Server

    上周初步对Blazor WebAssembly进行了初步的探索(ASP.NET Core Blazor 初探之 Blazor WebAssembly).这次来看看Blazor Server该怎么玩. ...

  7. [Asp.Net Core] Blazor Server Side 扩展用途 - 配合CEF来制作带浏览器核心的客户端软件 (二) 可运行版本

    前言 大概3个星期之前立项, 要做一个 CEF+Blazor+WinForms 三合一到同一个进程的客户端模板. 这个东西在五一的时候做出了原型, 然后慢慢修正, 在5天之前就上传到github了. ...

  8. Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端

    距离上次提出 [Asp.Net Core] Blazor Server Side 扩展用途 - 配合CEF来制作带浏览器核心的客户端软件 的想法后, 差不多2个星期了. 这个玩意也做了一半, 自用是没 ...

  9. [从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互

    [从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互 0x00 摘要 0 ...

  10. 在Blazor Server 项目中使用 EF Core Sqlite

    按照教程创建了一个 Blazor Server 项目 教程地址: https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/build-a-blaz ...

随机推荐

  1. WPF中实现含有中心点Slider双向滑动条

    想要实现的效果 原生滑动条 需要认识一下滑动条的组成 在原生控件中生成"资源字典"对应的样式 然后在track所在的列进行添砖加瓦 由于track在row="1" ...

  2. pyhton - parallel - programming - cookbook(THREAD)

    基于线程的并行 通常,一个应用有一个进程,分成多个独立的线程,并行运行.互相配合,执行不同类型的任务. 线程是独立的处理流程,可以和系统的其他线程并行或并发地执行.多线程可以共享数据和资源,利用所谓的 ...

  3. 使用hashicorp Raft开发分布式服务

    使用hashicorp Raft开发高可用服务 开发raft时用到的比较主流的两个库是Etcd Raft 和hashicorp Raft,网上也有一些关于这两个库的讨论.之前分析过etcd Raft, ...

  4. 代理详解(java代理和CGLIB动态代理)

      [代理]大家都知道,特别是在spring中aop.spring中的事务.spring解析注解@Configuration,以及最原始的解析spring.xml的配置,这些都是使用代理来进行实现的, ...

  5. 《设计模式的运用》使用策略模式+工厂模式优化代码中的if else

    使用策略模式优化if else 有这样一段逻辑 function{ for{ if() if() if( if( ) ) ... } } 公司有的祖传的代码,是一段规则校验,校验的越多,每一个请求都会 ...

  6. Vue-Element UI 文件上传与下载

    项目结构 后端 前端 效果演示 上传文件 下载文件 Code 后端代码 跨域 /** * 跨域配置 * @author Louis * @date Jan 12, 2019 */ @Configura ...

  7. Day01_Java作业

    A:选择题 1:下列标识符哪个是合法的(a) A.class B.$abc C.1234 D.Car.taxi B:填空题 1: java源程序的扩展名是( .java ) 2: java程序经编译后 ...

  8. 用 Golang 从0到1实现一个高性能的 Worker Pool(一) - 每天5分钟玩转 GPT 编程系列(3)

    目录 1. 概述 2. 设计 2.1 让 GPT-4 给出功能点 2.2 自己总结需求,再给 GPT 派活 3. 实现 3.1 你先随意发挥 3.2 你得让 Worker 跑起来呀 3.3 你说说 P ...

  9. vulnhub Necromancer wp

    flag1 nmap -sU -T4 192.168.220.130 有666端口 nc -nvu 192.168.220.130 666 监听回显消息 tcpdump host 192.168.22 ...

  10. python: 判断是否是某一类型

    函数isinstance 语法 isinstance(object, classinfo) 参数 object -- 实例对象. classinfo -- 可以是直接或间接类名.基本类型或者由它们组成 ...