草庐IT

在 Unity 中创建简单、可靠且干净的 UI

无论您在Unity中构建的应用程序类型如何,您都很有可能会使用一些用户界面(或简称为UI)。然而,尽管这项任务很简单,但为您的UI组件保持一个干净可靠的系统并非易事。事实上,一些错误的步骤会迅速破坏未来的变化,并导致数小时的过度工作和修订。为了避免您将所有精力花在构建不当的UI上,本文将介绍主要步骤,了解Unity提供的UI元素,然后是一个简单的工作流程来开发您的界面结构,最后是如何使用免费资源和其他Unity工具来增强其视觉元素。设置环境用户界面画布画布渲染模式画布缩放器UI面板、图像、按钮和文本用户界面图像用户界面文本用户界面按钮用户界面面板其他UI元素矩形变换和锚点锚预设基本菜单结构用于

c# - 如何使用 Ioc Unity 注入(inject)依赖属性

我有以下类(class):publicinterfaceIServiceA{stringMethodA1();}publicinterfaceIServiceB{stringMethodB1();}publicclassServiceA:IServiceA{publicIServiceBserviceB;publicstringMethodA1(){return"MethodA1()"+serviceB.MethodB1();}}publicclassServiceB:IServiceB{publicstringMethodB1(){return"MethodB1()";}}我将Uni

c# - Unity3D。试图在未经授权的情况下为对象发送命令

我有一个多人回合制策略游戏,需要一个游戏管理器来控制当前游戏状态(轮到谁了等等)。这个管理器应该对每个客户端都是通用的,它的状态应该在服务器上同步。我是这样操作的:游戏管理器对象是NetworkBehaviour,它具有NetworkIdentity,它既不是本地玩家权限也不是服务器权限。我制作了一个自定义NetworkManager,它在客户端连接时生成游戏管理器,同时测试它是否是服务器。这是一个代码:publicoverridevoidOnClientConnect(NetworkConnectionconn){ClientScene.Ready(conn);if(NetworkS

c# - Unity C# JsonUtility 没有序列化列表

我有一些数据需要序列化/反序列化,但JsonUtility只是没有做它应该做的事情。这是我正在使用的对象:publicclassSpriteData{publicstringsprite_name;publicVector2sprite_size;publicListsubimage;}publicclassSpriteDataCollection{publicSpriteData[]sprites;}如果我创建一个SpriteDataCollection,并尝试使用JsonUtility对其进行序列化,我只会得到一个空对象{}。这是它的构建方式:SpriteDatadata=newS

c# - Unity中Image的onClick事件

是否可以在Unity中为图像(Canvas的一个组件)添加“onClick”功能?varobj=newGameObject();ImageNewImage=obj.AddComponent();NewImage.sprite=Resources.Load(a+"/"+obj.name)asSprite;obj.SetActive(true);obj.AddComponent();如何为“onClick”事件添加Action? 最佳答案 假设ClickAction是您的脚本,您可以通过以下方式实现OnClick功能:usingUnit

c# - 在 Unity 中使用资源文件夹

我正在开发一个需要引用.txt文件的HoloLens项目。我将文件存储在Unity的“Resources”文件夹中,并让它们正常工作(通过Unity运行时):stringbasePath=Application.dataPath;stringmetadataPath=String.Format(@"\Resources\...\metadata.txt",list);//Ifmetadataexists,settitleandintroductionstrings.if(File.Exists(basePath+metadataPath)){using(StreamReadersr=n

c# - 使用 C# 从 Unity3D 中的输入字段获取文本

我正在尝试使用C#在Unity3D中的inputField中获取文本。我在我的编辑器中放置了一个inputField,重命名并标记为:Username_field。我的问题是:如何在C#脚本中获取InputFieldUsername_field中的文本? 最佳答案 将以下monobehaviour脚本附加到您的InputField游戏对象:publicclasstest:MonoBehaviour{voidStart(){varinput=gameObject.GetComponent();varse=newInputField.S

c# - Unity 2d跳跃脚本

有没有人有一个好的2d游戏unity跳转脚本?我的代码有效,但离跳跃还很远,看起来它在飞。usingUnityEngine;usingSystem.Collections;publicclassmovingplayer:MonoBehaviour{publicVector2speed=newVector2(10,10);privateVector2movement=newVector2(1,1);//UsethisforinitializationvoidStart(){}//UpdateiscalledonceperframevoidUpdate(){floatinputX=Inpu

c# - Unity3d 5 WavePro 动态网格碰撞器

我正在使用Water4Advance在Unity3d5.0中模拟海浪。我用GerstnerDisplace在Runtime中置换了我的飞机。我看到网格是如何变形的,我向它添加了一个MeshCollider,我想在运行时刷新这个碰撞器网格。我使用这个脚本在Unity4.6上工作:MeshCollidercollider=GetComponent();Meshmesh=GetComponent().mesh;collider.sharedMesh=null;collider.sharedMesh=mesh;但现在我只得到了扁平的原始飞机预制件。如何使用置换后的网格更新此MeshCollid

c# - 将 Sprite 对象数组组合成一个 Sprite - Unity

我在Unity中有一组Sprite对象。它们的大小取决于加载的图像。我想像一张平铺map一样将它们并排组合成一个图像。我希望它们的布局就像您正在形成一行图像一样,一个接一个。(注意:不是一个在另一个之上)我怎样才能做到这一点?我合并的原因(仅供那些想知道的人)是因为我使用的是polygon2DCollider。由于并排使用多个碰撞器时会发生一些奇怪的行为,因此我决定在添加一个大型多边形碰撞器之前先合并图像。请注意,这些事情发生在运行时。我不能只创建一个大图像并加载它,因为图像的顺序仅在运行时确定。我希望能得到一些帮助。谢谢。 最佳答案