关于Unity 如何与Blazor Server结合

Server,Unity ,Blazor · 浏览次数 : 0

小编点评

**一、简介** Unity 如何与Blazor Server结合? 最近我需要在 Unity 项目中使用 Blazor Server,但由于 Unity 与 Blazor Server 之间的相互依赖关系尚未完全了解,我需要查找一些相关资料来帮助我进行配置。 在网上搜索时,我发现了一些关于 Unity 与 Blazor Server 的资料,但这些资料相对少,而且大多数都是旧的,缺乏更新。 **二、实现步骤** **1. 创建 Unity 项目** 使用 Unity 编辑器创建一个新的 Unity 项目。 **2. 配置 Unity 项目** 打开 Unity 编辑器,在项目视图中选择“文件”>“生成设置”。 点击“WebGL”选项卡,并将以下设置选项选中: - 切换平台:黄色字体警告提示 - 渲染:线性改成伽马 点击“确定”。 **3. 发布 Unity 项目为 WebGL** 在 Unity 编辑器中,右键单击项目,选择“构建设置”。 在“生成”选项卡中,选择“生成”,然后点击“生成”。 这将生成一个名为“Build”的文件夹,其中包含了所有发布的 Unity asset 和配置文件。 **4. 创建 Blazor Server 项目** 创建一个新的 .NET 7.0 的 Blazor Server 项目。 **5. 配置 Blazor Server 项目** 在 Program.cs 中进行配置,并添加以下代码: ```csharp using BlazorApp6.Data; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton(); var app = builder.Build(); ``` **6. 连接 Unity 和 Blazor Server** 将刚刚生成的 Build 文件夹从 Unity 项目根目录中复制到 Blazor Server 项目的项目根目录下,并修改目录名称为 “BlazorServerTest”。 在 Blazor Server 项目的 Configure.cs 文件中,添加以下代码: ```csharp app.UseStaticFiles(); app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath, "BlazorServerTest")), ServeUnknownFileTypes = true, RequestPath = "/unity" }); ``` **7. 启动 Blazor Server 项目** 在地址栏中输入 http://localhost:{port}/unity/index.html,其中 {port} 是一个可配置的端口,然后启动 Blazor Server 项目。 **八、总结** 完成以上步骤后,你应该能够看到 Unity画面。

正文

关于Unity 如何与Blazor Server结合

一、介绍

最近工作中有UnityBlazor 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结合相似的内容:

关于Unity 如何与Blazor Server结合

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

[转帖]SYSTEMD 配置文件

https://www.cnblogs.com/xiexun/p/13643952.html [Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系。它的主要字段如下。 Description:简短描述 Documentation:文档地址 Req

Unity框架与.NET, Mono框架的关系

什么是C# C#是一种面向对象的编程语言。 什么是.NET .NET是一个开发框架,它遵循并采用CIL(Common Intermediate Language)和CLR(Common Language Runtime)两种约定, CIL标准为一种编译标准:将不同编程语言(C#, JS, VB等)使

关于面向对象的方法并行执行的问题

LabVIEW的从同一个类实例化的多个对象如何执行各自的方法呢? 这几天跟同事讨论到LabVIEW的面向对象编程中,如果我设计的一个类有一个方法比较耗时,那么当我实例化多个对象时,那么这个耗时的方法是怎么执行的呢?是各自并行执行还是,必须等某一个对象的方法调用完,接下来调用第二个对象的该方法呢? 接

关于ComfyUI的一些Tips

关于ComfyUI的一些Tips 前言: 最近发的ComfyUI相关文章节奏不知道会不会很快,在创作的时候没有考虑很多,想着把自己的知识分享出去。后台也看到很多私信,有各种各样的问题,这是我欠缺考虑了,今天这篇文章呢,根据私信的问题我大致整理了一下,给大家一些小tips。 目录 一、将 ComfyU

关于领域驱动设计,大家都理解错了

翻遍整个互联网,我发现,关于领域驱动设计,大家都**理解错了**。 今天,我们尝试通过一篇文章的篇幅,给大家展示一个完全不同的视角,把“领域驱动设计”这六个字解释清楚。 ## 领域驱动设计学习资料现状 领域驱动设计的概念提出已经有20年的时间了,整个互联网充斥着大量书籍、文章和视频教程,这里我列举几

关于docker-compose up -d 出现超时情况处理

由于要搭建一个ctf平台,用docker一键搭建是出现超时情况 用了很多办法,换源,等之类的一样没办法,似乎它就是只能用官方那个一样很怪。 只能用一种笨办法来处理了,一个个pull。 打个比如: 打开相对应docker-compose.yml文件 可以看到image就是需要去下载的。那么此时你就可以

关于 KL 散度和变分推断的 ELBO

ELBO 用于最小化 q(z|s) 和 p(z|s) 的 KL 散度,变成最大化 p(x|z) 的 log likelihood + 最小化 q(z|s) 和先验 p(z) 的 KL 散度。

关于面试被面试官暴怼:“几年研究生白读” 的前因后果

中午一个网友来信说自己和面试官干起来了,看完他的描述真是苦笑不得,这年头是怎么了,最近互联网CS消息满天飞,怎么连面试官都SB起来了呢? 大概是这样的:这位网友面试时被问及了Serializable接口的底层实现原理,因为这是一个标识性的空接口,大部分同学在学习时都秉持着会用就行(说实话,Build

关于vue中image控件,onload事件里,event.target 为null的奇怪问题探讨

废话不多说(主要文笔比较差),直接上代码 一个简单的demo,如下 vue代码 imgLoaded(e) { deb