Unity C#的线程锁(lock)简述,以及案例 lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。在多线程环境下,该代码块操作某个共享资源时执行顺序是无序的,这也是为什么unity引擎本身采用单线程的原因,简单来说多线程环境下,你不知道下一个要执行的函数是那一个。通过使用lock关键字,我们可以创建一段互斥代码块,同一时刻只有一个线程能够执行这段代码,从而避免了竞态条件和其他并发问题。
C# 实现WebSocket服务端代码用于Unity WebGL通信 一般我们在做展厅项目的时候,交互方式和常见的数字孪生项目是不一样的,常见的数字孪生是通过鼠标点击来进行操作,但是在展厅中屏幕和主机物理距离是很远的,然后无线鼠标操作受到场地影响又影响用户的体验。如果移动端要控制多个大屏还要实现消息的广播,将移动端收到的消息广播给所有的客户端,客户端再根据收到的消息再处理相应的逻辑。使用移动端控制我们的展厅必然会涉及到服务端和客户端通信的问题。我们的实现思路如下。首先服务端要开启一个websocket监听,完成一个收消息和发消息的基本函数。
Unity WebGl和前端(Angular)相互调用(含跨域问题) 在Unity官方文档中就已经介绍了Unity和JS相互调用的问题,但是我们实际的应用中往往是使用iframe来展示WebGL。这样不但是webgl和js相互调用的问题,还包含了iframe跨域的问题。我们的项目中前端使用的是angular框架,就以angular为基础来说一下这个问题,当然vue的前端框架应该都一样的原理。首先说一下unity和js相互调用的问题。
HoloLens 2 部署问题(Unity.IL2CPP.Building.BuilderFailedException: Lump_libil2cpp_vm.cpp) Visual Studio 2022 17.4更新在他们的标准c++头文件中引入了一个突破性的变化,如果你升级到这个版本的Visual Studio,会导致部分IL2CPP运行时无法编译.发现怎么打包部署都不行因为国内论坛根本没有这个问题的解决方法,还是得考老外解答;在打包生成的项目中找到 sparseconfig 这个文件。
Unity WebGL焦点丢失问题(保持在后台运行) unity打包成webgl以后会发现,如果点击了别的地方webgl就会停止运行,像是卡住了一样。需要再次点击屏幕才会运行。但是勾选上以后的意思是保持unity在后台运行,性能消耗会有点大,看情况取舍吧。解决方法:勾选上Run In Background。
Unity WebGL监听是否进入全屏模式 全屏一开始使用webkitRequestFullScreen,直接控制全屏发现,当点击全屏后,画面出现拉伸,需要点击一下才会回复正常的画面。第二个问题,做好js调用unity中的代码,控制title的显示和隐藏,然后增加这个方法就可以监听浏览区是否进入全屏状态。今天遇到一个需求打包成WebGL之后要当做一个iframe,嵌入到别的网页中,其中遇到两个难题。2.全屏的时候使用unity中的title,非全屏的时候要使用网页本身的title。修改打包后的CSS文件,将全屏按钮移动到画面中。
Unity中使用WebSocket (ws://)的方法 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
Go引入Gin遇到的问题(package io/fs is not in GOROOT (C:\Go\src\io\fs)) 在网上找了半天才发现,io/fs 只在golang 1.16及以上版本才支持。我的golang版本是1.15.6,网上给出的意见是升级goland版本,但是,公司里用的1.15.6所以我没有升级。执行过后:终端会有一个提示(package io/fs is not in GOROOT (C:\Go\src\io\fs))之前的项目都是可以使用Gin框架的,为什么我新开的项目会出现问题呢,于是我就开始对比新旧项目在环境和和框架上的区别。根据Gin官网的教程我们知道如果使用Gin框架只需要执行下边命令就可以。