在Unity中用C#关闭线程
我想确保当我的应用程序退出时,所有开放线程都关闭.但是,当我尝试这样做时,我会发现错误告诉我,即使这一切都在同一类中,也没有参考对象. 有人可以帮我吗? 启动/打开线程: Thread listen_thread; TcpListener tcp_listener; Thread clientThread; // Use this for initialization void Start () { IPAddress ip_addy = IPAddress.Parse(ip_address); tcp_listener = new TcpListener(ip_addy, port); listen_thread = new Thread(new ThreadStart(ListenForClients)); listen_thread.Start(); Debug.Log("start thread"); }
36 2023-06-25
编程技术问答社区
在Unity3D中,"设置 "一个网格的边界会有什么作用或实现?
在统一代码基础上,我看到了: // the game object currently has no mesh attached MeshFilter mFilter = gameObject.AddComponent(); gameObject.AddComponent(); // no problem so far mFilter.mesh = MakeASmallQuadMesh(0.1f); // great stuff mFilter.mesh.bounds = SomeSpecificBounds(); // what ? 函数" makeasmallquadmesh"具有制作网格的通常完全正常的代码,因此 Mesh mesh = new Mesh(); mesh.SetVertices(verts); mesh.SetIndices(indices); mesh.SetUVs(0, uvs); mesh.R
46 2023-06-21
编程技术问答社区
20 !=20怎么可能返回真
所以,我试图做一些团结的事情,我写了类似的东西 private IEnumerator RotateToNormal() { while (hingePoint.eulerAngles.z > 20) { float d = Time.deltaTime * 500; hingePoint.eulerAngles = new Vector3(hingePoint.eulerAngles.x, 0, Mathf.Clamp(hingePoint.eulerAngles.z - d, 20, 90)); transform.position = hingePoint.position + hingePoint.rotation * new Vector3(camDist, lift, 0); transform.LookAt(hingePoint);
86 2023-06-20
编程技术问答社区
如何在Ubuntu中使用Visual Studio Code来开发Unity3D项目?
我有KDE霓虹灯(基于Ubuntu 18.04).我已经安装了Unity3d 来自此链接. 我需要一个C#脚本编辑器才能开始开发C#项目.如何设置Visual Studio代码与Unity3D项目合作?我需要它来自动完成代码和下划线编译错误. 解决方案 请注意,以下说明包含特定于18.04的命令.如果您有不同版本的Ubuntu或Linux. ,请检查源 1.安装Visual Studio代码的C#扩展名 2.安装Visual Studio Code的"统一调试器"扩展名 3.安装最新版本的" Mono" Mono是Microsoft赞助的Microsoft .NET Framework的开源实现.存储库安装的说明: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo
40 2023-06-19
编程技术问答社区
UnityWebRequest在iOS中不工作
/a>在Windows桌面,Windows Mobile,Android甚至iOS编辑器上都可以使用.但是,当我将应用程序发布到Apple App Store时,它将无法连接到Internet.与其他平台不同,没有明显的延迟,并且在尝试时似乎立即失败. 错误是: 未知错误 有什么特殊方法需要配置Xcode项目以允许iOS应用程序连接到Internet? 对于它的价值,这是源代码的源代码: IEnumerator SyncRequest(string data, Action responseHandler) { Debug.Log("Requesting " + data); UnityWebRequest www = UnityWebRequest.Get(baseurl + "/api-voteoptions.php?" + data); yield return www.Send(); if
40 2023-06-02
编程技术问答社区
在同一台机器上,Intellisense对一个项目有效,但对另一个项目无效
我在笔记本电脑上有一个Unity项目,IntelliSense和AutoCompletion可以与Visual Studio Code(Mac OS System)一起工作. 现在,我创建了一个全新的项目(与旧版本相同的统一版本),对于该项目,IntelliSense不起作用:o同一机器,同一编辑器,其他所有内容都是相同的. 关于什么建议可以解决该问题,因为所需的依赖项已经安装(Visual Studio代码输出没有给我任何日志或其他消息)? 解决方案 来自OmnishArp的公告 如果您仍然需要Unity或.NET框架支持,则可以将OmnishArp.usemodernnet设置为vs代码设置中的false并重新启动OmnishArp.请参阅上面的要求部分,以确保安装必要的工具. 因此,我们只需要取消选中 OmnishArp:在VSCODE设置中使用现代网络,并提防设置优先级.
16 2023-05-23
编程技术问答社区
如何继续检查一个游戏对象是否会在unity中被实例化为层次结构?
我想继续检查游戏对象是否会实例化.我拥有的所有是gameObject name say'model'.如果模型在层次结构中处于活动状态,我想做某件事.问题最初是gameObject不可用的.后来仅将其实例化.如何检查层次结构中是否存在具有名称的游戏对象. if(gameobject.name=="Model(Clone)") { //Do something } 这将返回 null值,因为它最初未实例化.在某些时间将进行实例化之后. 解决方案 初始化变量模型 Gameobject Model; 当尚未实例化时,逻辑断言将返回false if (Model != null && Model.name == "Model(Clone)"){//return false //Do Something } 用名称实例化gameObject. Gameobject Model = Instantiate (somePrefab); if需要放置
32 2023-05-23
编程技术问答社区
如何整合华为账户套件
目前我正在使用evilminddev的华为插件. 以下是帐户脚本. using HuaweiMobileServices.Id; using HuaweiMobileServices.Utils; using System; using UnityEngine; namespace HmsPlugin { public class AccountManager : MonoBehaviour { public static AccountManager GetInstance(string name = "AccountManager") => GameObject.Find(name).GetComponent(); private static HuaweiIdAuthService DefaultAuthService { get { D
18 2023-05-22
编程技术问答社区
如何在屏幕上填补空白的web glity?
whitespace图像 硬编码图像 所以我们正在制作这个游戏,我希望游戏屏幕填充空白(我认为这被称为使其成为本地分辨率?). 编码器说:"容器只是硬编码为一定尺寸",他不知道如何使其填充屏幕,因为所有计算机都始终如一地填充屏幕,例如,如果计算机具有不同的分辨率. . 游戏是团结制作的,那个家伙在Web Gl. 中说了它 对不起,谢谢这个网站. 解决方案 您需要制作自己的模板,根据这些文档,您在Assets中创建文件夹,并在内部为您的模板创建一个新文件夹,例如BetterTemplate.在其中放置index.html文件和任何其他图像,CSS,您想要包含的JavaScript文件. index.html可以看起来像这样 %UNITY_WEB_NAME%
28 2023-05-16
编程技术问答社区
HoloLens是如何识别空间的 ? HoloLens能够记住的空间数量有什么限制吗?
有人知道HoloLens如何重新控制它的环境吗?当我们使用空间映射时,我发现第一次扫描环境时,它花费了一些时间来映射它.但是从第二次开始,它可以识别出空间并立即放置与之关联的地图. 此外,我知道HoloLens库存与WiFi相关的环境数据.它可以存储的空间数量是否有限制? 解决方案 它可以存储的空间数量有限制吗? 极限取决于您的硬盘预算. HoloLens会不断地读/写入磁盘,以确保将设备附近的量加载到磁盘上,以使全息图闭塞效果很好.并且只有在我们达到磁盘预算以存储数量的情况下才删除空间. 有人知道HoloLens如何重新统治它的环境? HoloLens将搜索与空间数据库中当前空间连接的地图数据,以确定设备是否在新空间中.如果我们失去了跟踪,并且该设备认为它在一个新空间中,我们将启动一个新的网格,并将数据合并到我们的地图中,如果我们以后发现它们已连接.
122 2023-05-16
编程技术问答社区
用Unet连接两个Hololens的困难
我对团结是相对较新的,目前正在尝试在HoloLens上构建多用户应用程序.目前,我只是想让两个HoloLens使用UNET通过LAN进行连接.当我使用一个Hololens托管服务器时,我的笔记本电脑可以在Unity编辑器中的播放模式下连接到它.但是,当我尝试使用其他Hololens连接到它时,它不起作用,我不确定为什么.还有其他人有这个问题吗?如果是这样,如何修复它? 预先感谢. 编辑:一些代码 这是网络管理器的代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Networking; using System; public class NetworkManager_Custom : NetworkManager { public void StartupHos
16 2023-05-16
编程技术问答社区
MRTK-在PokePointer重叠查询中发现的64个碰撞器的最大数量
我试图用48 * PressableButtonHoloLens2 + GridObjectCollection在我的个人项目中构建颜色选择列表.当我用模拟指尖奔跑并悬停时,编辑器会给我这些警告消息. Q1 :这是因为太多的按钮彼此太近吗?还是只有对撞机的按钮的数量超过64?消息说:"考虑增加指针配置文件中的查询缓冲区大小' Q2 :在哪里可以增加缓冲尺寸?我在指针配置文件中看不到任何"缓冲区大小"字段. Q3 :它会降低性能吗? (增加缓冲尺寸) 警告消息 在Pokepointer中发现的64个对围栏的最大数量. 考虑增加指针配置文件中的查询缓冲区大小. UnityEngine.debug:logwarning(对象) Microsoft.mixedreality.toolkit.input.pokepointer:findclosesttouchableforlayermask(layermask,layermask, BaseNearInteracti
14 2023-05-16
编程技术问答社区
用Macbook在unity中开发hololens
我是统一和霍洛伦斯的新手,我开始探索它. 我有MacBook(我不知道这是否是问题). 我下载了所有组件(vuforia,il2cpp等)的团结. 当我更改HoloLens开发的项目设置时,我会有一些问题. 特别是当我选中"支持虚拟现实"框时,我在HoloLens选项下方的列表中找不到. 另外,如果我单击"+"按钮.我明白:Vuforia,Oculus,OpenVR,但没有HoloLens! 此外,还在现场:"我只找到"无"和" IL2CPP". 现在,正如我已经说的那样,我在安装过程中下载了所有组件. 哪个问题? 解决方案 因为Hololens在UWP上运行,您需要Windows.这是因为Windows开发库不在Mac(或任何UNIX)上运行. 您唯一的选择是使用运行VM如果您在Mac上开发并且仅在VM中构建). . 除了HoloLens模拟器外,一切都可以正常工作,该模拟器不适用于每个MacBook硬件. 其他解决方案 您必须下载正确的
48 2023-05-16
编程技术问答社区
Unity着色器(hlsl)相当于Vector3.ProjectOnPlane
在统一(HLSL)的着色器中,我正在寻找一种将矢量(float3或float4)投射到平面上的方法,给定平面的正常方向.我需要的是等同于Unity的Vector3.Projectonplane函数: 解决方案 如果您的平面正常向量已归一化: inline float3 projectOnPlane( float3 vec, float3 normal ) { return vec - normal * dot( vec, normal ); } 如果不是: inline float3 projectOnPlane( float3 vec, float3 normal ) { return vec - normal * ( dot( vec, normal ) / dot( normal, normal ) ); } 相同的公式,具体取决于GPU模型和驱动程序版本可以更快或更慢: inline float3 projectOnPlane( flo
18 2023-05-16
编程技术问答社区
GetHashCode()的覆盖方式经常会出现coliding。
我正在使用Unity,Unity没有元组,所以我创建了自己的元组课以工作,因为我需要它的字典. Dictionary , Tile> 我创建的 瓷砖类别与解决此问题并不重要(至少我认为这不会有帮助). 但问题是我在元组中同时使用负整数,当我将当前GetHashCode()与Tuples一起使用时,有时我会得到相同的哈希码,例如Tuple和Tuple当我返回HashCode时,两者都给出-172. 是否有任何好的Gethashcode不会引起我的冲突? 老实说,我只使用操作员==,因为我需要检查两个元组是否内部的整数是否相同,如果我能得到操作员==,那才能在两个整数相同的情况下碰撞并在相同的顺序,它可以解决我的问题. 其他一些小问题,我无法理解平等的替代,因为它在起作用,但是我不知道它的工作原理,因为我会更改每件事,直到它起作用为止. public class Tuple {
20 2023-05-16
编程技术问答社区
处理对象之间的互动
我目前正在统一开展几场比赛.我正在使用C#.我通常对游戏中的代码感到满意,可以这么说,我知道如何使其"优雅".我非常擅长编码单个元素(例如小行星中的宇宙飞船).但是,我只对我的代码感到满意,直到达到一个对象需要与另一个对象进行交互的地步.在那之后,它变成了代码的意大利面条,我总是放弃该项目..我还没有找到一种优雅的处理方式.我相信我已经在互联网周围的各个地方问过,但是我似乎一直在回到这一点. 是否有任何通用方法来处理对象之间的相互作用?有什么感觉不骇客的吗?我的最新项目再次出现了这个问题.这是一个统一项目,一个2D侧滚子.检测我的角色是否碰到"尖峰",涉及检查碰撞对象标签,并查看它是否是"尖峰".但是,我所有的"死亡"代码都包含在玩家中,而不是尖峰中.除了带有标签的网眼对撞机外,尖峰并不是什么.这感觉是错误的. 那么stackoverflow,你们如何处理这个? 解决方案 当约翰·叶片(Johnn Blade)在对这个问题的评论中留下,使用作为一个具体的示例,您可以将
16 2023-05-03
编程技术问答社区
谷歌OAuth访问令牌为空
我认为这个问题可能会问一百万次,但我没有找到任何答案. 我正在尝试使用我的Unity项目访问Google日历,因此我使用C#,但不能以Google客户端库为不支持的官方. 可悲的是,每次我尝试从服务器获取访问令牌时,我都会得到404或只是空的响应. 我的代码: private static string tokenUrl = "https://oauth2.googleapis.com/"; public static string GetOAuthTokens(string auth_code, string grantType) { RestClient rc = new RestClient(tokenUrl); RestRequest request = new RestRequest(Method.POST); request.Parameters.Clear(); request.Resource = "token";
52 2023-05-02
编程技术问答社区
当3D人物移动时旋转他们
我想从Unity的一个小3D平台开始.当我移动时,我希望角色向移动方向前进.因此,当我按左/" A"时,我希望角色立即向左转并向前走.其他方向相同.问题在于,当我离开钥匙时,字符转回默认旋转. 重要代码: private void FixedUpdate() { float inputX = Input.GetAxis("Horizontal"); // Input float inputZ = Input.GetAxis("Vertical"); // Input if (GroundCheck()) // On the ground? { verticalVelocity = -gravity * Time.deltaTime; // velocity on y-axis if (Input.GetButtonDown("Jump")) // Jump
28 2023-04-21
编程技术问答社区
一个范围A和B之间的随机数,总和为一个特定的数字
我希望生成一些可以汇总到特定数字的随机数. 示例: 范围(10,35) 总计(sum):100 要生成的数字:5 最好的方法应该是什么?试图写我自己的逻辑,但看起来像psudo代码一样凌乱.我可以遵循任何算法吗?看到了类似的问题,但没有得到任何正确的答案. 解决方案 一个想法可能是要考虑以下事实:前4个数字的随机性将导致最后一个数字的随机性.遵循您的示例: 100/5 = 20.生成的平均数量不能大于20.每次您生成大于20的数字时,您都可以将三角洲减为下一步生成的数字. a = rand(10,35).假设A =20.我们很好. b = rand(10,35).假设b =35.我们有15个三角洲. c = rand(10,35-15)= rand(10,20)= 18. d = rand(10,20)= 12. e = 100-(a + b + c + d)= 15 您现在有5个随机数,最多可达100. 注意:@derh
20 2023-04-21
编程技术问答社区
如何根据球面地图上玩家的方向来倾斜物体
如何正确计算旋转角度以使对象躲避播放器?这意味着播放器来自哪一侧,对象必须根据球员的方向远离玩家.我想要像视频一样的效果,但没有关节,只有旋转角度: https://www. youtube.com/watch?v=gjhir3soyxs 我有答案来自,但现在我需要一个球形地图.现在看起来像这样: 我有相同的树,我的结果不同: 我对这棵树有正确的结果: 正确树的坐标: 解决方案 如果您在球体上,则需要将地面的正常方式用作向上方向.由于您最初可能以正确的方式旋转了树,因此您可以执行以下操作: [SerializeField] Transform player; [SerializeField] float effectMaxDistance=1; [SerializeField] float maxAngle=50; Quaternion initialRotation; Vector3 initialUp; void Start(){ initia
28 2023-04-21
编程技术问答社区