在unity3d ui界面 中怎样创建 UI

Unity(3)
从代码中动态生成UI,这里有一个unity的历史问题要说明。从Unity4.6开始,Unity已经开始使用新版的UI系统。我是一个最近才转到Unity领域的新人,使用的最早的版本就是Unity4.6。但在Unity4.6之前,UI的控制主要由脚本控制,并且放在OnGUI这个函数中。这种方式缺点很明显,游戏逻辑跟界面代码住在同一个地方,可想而知有多乱。Unity4.6之后放弃了这样的方法,引入了新的UI系统,你几乎不用写任何代码就可以做一个UI出来,简直就跟使用PS一样,当然说不用写任何代码还是夸张了点,相应还是要交给代码来实现的。
在UI系统中,最然我兴奋的就是UI的动画系统,真的是一个非常棒的体验,你可以通过给UI添加动画,做出漂亮的动画效果。讲的离题了,还是回过头来说说从代码中创建UI吧,虽然Unity现在的UI系统非常的棒,可以做出各种UI,但是很多时候我们想要动态的UI,这里的意思是有时候需要根据获得数据,动态生成我们想要的UI。在老的版本中我们可以用GUI.Button(new Rect(10, 10, 150, 100), "I am a button"),立马生成一个按钮。但是这样的代码是很难维护的,我们可以使用预制,对,没错,prefab.
为什么要用预制,以及怎么用,官方给出了他的解释,我赞同官方的观点。
总的来说分为下面几步:
1.首先在场景中创建好你的UI。
2.设置好这些UI在场景中的布局。
3.把需要做成预制的部分拖到Project 窗口中,自动生成预制,你要的预制就做好了。
这里面会用到Instantiate()这个接口,通过它我们把预制克隆并且放到场景中去。
下面看实验:
1.首先在你的unity里面做好界面,这里做了一个技能的测试按钮,按钮颜色为红色
2.把你要动态生成的UI拖入Porject视图中,让他变成预制,因为我们想要动态生成很多技能按钮,那么我们就把这个按钮做成预制,需要的时候构建它的实例。
3.在代码中动态构建UI,在代码中动态生成想要的按钮
for (int i = 0; i & models.L i++)
Models[i] = models[i];
SkillButtons[i] = (Instantiate(ButtonHead) as GameObject);
SkillButtons[i].transform.SetParent(transform, false);
SkillButtons[i].transform.position += new Vector3(0.0f, uistartPosInVertical*i, 0.0f);
通过一个for循环,我动态生成了models.length个技能按钮
具体步骤可以参考Unity官网的说明:
/Manual/HOWTO-UICreateFromScripting.html
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6430次
排名:千里之外
原创:13篇
(5)(1)(1)(2)(2)(1)(2)unity3d中怎么创建UI按钮功能?
作者:佚名
字体:[ ] 来源:互联网 时间:09-07 16:16:22
unity3d中怎么创建UI按钮功能?很多人不知道该怎么使用unity3d,下面我们就来看看unity3d中通过对一个按钮的创建使用,从而了解unity3d中UI的使用的教程,需要的朋友可以参考下
unity3d中通过对一个按钮的创建使用,从而了解unity3d中UI的使用。
软件名称:Unity for mac v5.0.0b1 苹果电脑版软件大小:1.66GB更新时间:
1、打开unity3d项目&GameObject&--&UI&--&Button&,创建一个按钮。
2、在&Rect Transform&下可以改变按钮的布局位置大小等。
3、在&Image (Script)&与&Button(Script)&中可以更详细的设置按钮的颜色等效果。
4、展开Button在其中的&Text&中的&Text(Script)&中可以设置按钮显示文字信息。
5、新建一个文件夹&Script&在里面新建一个&Button_test&的脚本,打开后在里面添加一个方法
public &void &Click_test(){
& & & &Debug.Log(&点击测试&);
6、把编辑好的&Button_test&脚本添加到场景中的Button上。
7、点击&On Click ()&下的&+&添加,然后Object中选择添加&Button&。
8、点击&No Function&选择&Button_test&--&Click_test ()&,保存后运行,点击按钮旧可以调用脚本中我们定义的Click_test ()方法,输出&点击测试&。
注意事项:
脚本中定义的方法必须是public的,否则找不到。
相关推荐:
大家感兴趣的内容
12345678910
最近更新的内容UI 里的Text
在脚本中怎么定义
什么类型_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:56,912贴子:
UI 里的Text
在脚本中怎么定义
什么类型收藏
public var Text:GUIT
以前GUI的 public var Text2:UI.T
这个在JS中可以 C# 不行 C# 用什么类型呀
第九城市是游戏教育领域的上市公司,专业培训unity3d,游戏开发选九城unity3d,咨询热线:021-
语法就不一样肯定不能这么写了,C#的public T还有要注意命名空间引用添加
先find,然后再用text
你是要往text写还是读?
把UnityEngine.UI加入脚本头就可以正常调用了!
昨天找一上午才找到怎么用!!结果大早上看见这个帖子被挖上来了。忍不住吐槽一下。这两天刚开始用5.0的!!!
text 对象要作为carvas的子对象下面是中roll-a-ball课程中的例子,研究了一上午unity手册才知道,对于unity3d 5.0 要改成这个样子才行======================================using UnityEusing System.Cusing UnityEngine.UI;public class Playercontroller : MonoBehaviour {Rpublic Text countTvoid Start() {//rb = GetComponent&Rigidbody&();rb=GameObject.Find(&Player&).GetComponent&Rigidbody&();count = 0;SetCountText();}void FixedUpdate(){float moveHorizental = Input.GetAxis (&Horizontal&);float moveVertical = Input.GetAxis (&Vertical&);Vector3 movement = new Vector3 (moveHorizental, 0.0f,moveVertical);rb.AddForce (movement * speed);}void OnTriggerEnter(Collider other){if (other.gameObject.tag == &Pickup&) {other.gameObject.SetActive (false);count++;SetCountText();}}void SetCountText(){countText.text = &Count:& + count.ToString ();}}
楼上你代码没发完←_←
骂的坑人啊5.0只要加上头文件using UnityEngine.UI;GetComponent&&() 就会出现Text 的类型,原来只有GUItext。现在都找不到GUItext这个控件了。用下面方法就能显示了rb=GameObject.Find(&Player&).GetComponent&Text&()=“11111”;
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或怎样在 Unity 中创建 UI - 简书
<div class="fixed-btn note-fixed-download" data-toggle="popover" data-placement="left" data-html="true" data-trigger="hover" data-content=''>
写了114953字,被625人关注,获得了664个喜欢
怎样在 Unity 中创建 UI
在现在每一个软件应用中,用户界面(UI)都是核心的特征。游戏也没有抛弃这一规则。有非常多的游戏都使用 UI 来显示一些信息,比如生命值,技能,地图,武器的弹药,等等。
提供了许多 UI 组件,你都可以在你的游戏中使用它们。在这篇文章中,我会指导你在 unity 的菜单中如何创建一个简单的暂停菜单。这个暂停菜单将显示一个内容为『Paused』的 text 组件和三个按钮组件:分别是复位按钮『Resume』,重新开始按钮『Restart』,退出按钮『Quit』,并且还是显示游戏从场景加载到现在的时间。在这篇文章的最后,你应该创建出了类似下面的界面:
在 unity 如何创建一个简单的暂停菜单
让我们开始吧,打开 unity 并且创建一个空的工程,选择 2D 或者 3D 都可以。一旦项目创建了之后,保存你当前的场景并且给它命名一个你想要的名字。我命名我的场景为『Test』。现在让我们来做用户界面『UI』吧。
在层级视图『Hierarchy』右键然后选择 UI -& Canvas。
在 unity 中对于所有的 UI 组件都需要
。本质上,canvas 是你放置 UI 组件的容器。任意你创建的 UI 组件都必须是 canvas 的子对象。当你创建 Canvas 的时候,你会注意到在层级视图中也创建了一个名为『EventSystem』的对象。这个对象用来确定诸如鼠标输入的事件,这对 UI 组件来说也至关重要,比如按钮。
恰当地设置你的 Canvas 的小提示:
在层级视图中选择 Canvas。
在检视视图中,找到『Render Mode』然后选择『Screen Space – Camera』。
从层级视图中拖拽主摄像机到检视视图中 Canvas 的『Render Mode』上。
关于 Canvas 的渲染模式『render modes』更详细的介绍请看。在本文中,我们将仅仅使用『Screen Space – Camera』来做一些简单的事情。这就确保我们的 UI 会一直显示在摄像机视图上。
现在我们想要在 canvas 上添加一个面板『Panel』。面板是 UI 组件中的一个基本组件。我之所以喜欢面板是因为你可以很容易地通过脚本打开或关闭而不影响一整个 Canvas。这就允许你创建更多基于游戏状态动态改变的 UI 组件了。例如,你有一个多玩家的游戏,可以让一个玩家加入另一个玩家的工会,你想要一个菜单显示其他成员在工会里的名字以及他们的血量『HP』到用户界面上。但是,你还是想把所有普通的 UI 组件(地图,技能,血量,法力)显示在玩家的屏幕上。你可以使用一个面板组件,然后把玩家的名字和血量放到他们自己的菜单上,并且你可以基于玩家是否在工会中来切换菜单打开或是关闭。
如何创建你自己的面板
在层级视图的 Canvas 上右键然后选择 UI -& Panel
你将会看到你的游戏场景变成了白色半透明。这是因为每一个 Panel 组件里都连接着一个 Image 组件。你可以在检视视图中 在Color属性下面改变Panel 组件的颜色和透明度。在本文中,我保持默认选项。
现在,让我们添加一个内容为『Paused』的 text 组件。在层级视图的 Canvas 上右键然后选择 UI -& Text。
当 text 组件被创建的时候,你会注意到你可以移动它,就像在 unity 中其他任何游戏对象一样。一般来说,当处理 UI 组件的时候,我更喜欢使用矩形转换工具来移动和调整组件的大小:
把 text 组件放到任何你想放的位置。我把它放到了 Panel 组件的水平和竖直中心。你会注意到当你使用矩形转换工具的时候,你可以看到面板组件的矩形在 x 轴和 y 轴上的中心线。如果你喜欢,这可以让你更容易地把 UI 组件放到 Panel 组件的中心。
修改 text 组件的说明
鼠标左键点击刚刚在层级视图中创建的 Text
首先,在你的场景视图中调整 Text 对象到一个合适的尺寸。
我们要让文本更大,所以我们的文本区域需要有空间来显示文本的内容。
在检视视图中,定位到 Text (Script)
属性然后设置内容为 &color=red&Paused 。
Text (Script) 属性里的『Font Size』,讲鼠标悬于它的上面,然后按住不放,左右移动,你就会看到它的值会变大或是变小,设置一个你喜欢的字体大小。
找到『Paragraph』属性选择对齐『Alignment』方式为居中。然后,选择右边垂直居中。
我的界面如下:
你可能最先注意到我们在文本框中使用的 tag。Unity 中可以使用,它允许你使用标记 tag 值来修改文本的外观。在本例中,我们指定粗体,红色字体。为了让所做的修改显示,你必须关闭一个 tag 。你可以在
了解更多。
『Font Size』可以调整字体的大小。如果你觉得在你的游戏中字体看上去不太好,你可以使用前面介绍的矩形转换工具来调整 Text 组件的矩形框。矩形框需要足够大来适应字体的大小。
对齐设置是对齐文本在水平(第一个设置)和垂直(二次设置)中心。你会注意到可以为文本设置颜色,这可以被用来改变文本的颜色。但是,在游戏中可能有的时候会有 UI 组件需要依赖于它所发生的事情而动态改变。有时你仅仅需要一个 Text 组件来显示很多依赖于游戏状态的事件。在这种情况下,我发现使用 tag 来改变颜色比用脚本来动态地改变颜色组件更容易。我主要是想用这个 tag 来展示这个教程的富文本功能。
如何创建你的按钮:
下面我门将会创建三个按钮。uinty 中已经内建了按钮组件,这可以让你在游戏中当按钮被按下的时候来响应某些事件。例如,我们将会创建一个退出按钮『Quit』,当被按下的时候,会调用一个脚本来执行退出游戏的功能。
在层级视图中的 Panel 对象下右键
选择 UI –& Button
重复操作两次(或拷贝粘贴刚刚创建的按钮)
直到三个按钮都创建,把后一个按钮移到前一个按钮的下面就像下面这样:
为了改变每一个按钮的标题,在层级视图中点击按钮的的小箭头,然后你会注意到每一个按钮下面都有一个『Text』子对象。
在 text 对象上左键点击,然后改变每一个按钮的标题分别为『Resume』,『Restart』,『Quit』像上面的截图一样。
在让这些按钮起作用之前,让我们在菜单中添加最后一个组件
在层级视图中右键点击『Panel』对象
选择 UI –& Text
左键点击这个新文本对象并且改变文本内容为『Time Since Startup:』
调整 text 组件的字体大小,可能也要调整矩形框的大小为了让它看起来合适。
水平和垂直居中文本
最后你的游戏视图看上去应该像下面这样:
现在我们正处于我们香味用户界面创建一些功能的位置。首先要做的就是让玩家可以按下『esc』键来暂停游戏,随后打开这个菜单。
在你的场景中创建一个空的游戏物体,命名为『_GM』
在层级视图中选中『_GM』然后在检视视图中选择『Add Component』
向下滚动并且选择『New Script』。命名脚本为『Manager』 并且确保它是 C# 脚本
拷贝和粘贴下面的代码到你的脚本中
using UnityE
using System.C
using UnityEngine.UI; //Need this for calling UI scripts
public class Manager : MonoBehaviour {
[SerializeField]
Transform UIP //Will assign our panel to this variable so we can enable/disable it
[SerializeField]
Text timeT //Will assign our Time Text to this variable so we can modify the text it displays.
bool isP //Used to determine paused state
void Start ()
UIPanel.gameObject.SetActive(false); //make sure our pause menu is disabled when scene starts
isPaused = //make sure isPaused is always false when our scene opens
void Update ()
timeText.text = "Time Since Startup: " + Time.timeSinceLevelL //Tells us the time since the scene loaded
//If player presses escape and game is not paused. Pause game. If game is paused and player presses escape, unpause.
if(Input.GetKeyDown(KeyCode.Escape) && !isPaused)
else if(Input.GetKeyDown(KeyCode.Escape) && isPaused)
UnPause();
public void Pause()
isPaused =
UIPanel.gameObject.SetActive(true); //turn on the pause menu
Time.timeScale = 0f; //pause the game
public void UnPause()
isPaused =
UIPanel.gameObject.SetActive(false); //turn off pause menu
Time.timeScale = 1f; //resume game
public void QuitGame()
Application.Quit();
public void Restart()
Application.LoadLevel(0);
保存脚本返回到 unity 编辑器中
在层级视图中的『_GM』对象上左键点击
拖拽『Panel』对象和『Time Text』对象到检视视图中『Manager』脚本的合适的位置。
如果你想在这个时候玩一下游戏,只需要按下『esc』键,你的 UI 组件就会显示到 Panel 上。你也会看到 Time Text 也会显示从游戏加载到现在的时间。
但是,你会注意到点击按钮没有反应,我们下面就要解决这个问题
在层级视图中选中『Resume』按钮,然后在检视视图中找到『Button (Script)』组件,你会注意到有一个『On Click()』。这就是我们要给按钮添加功能的地方。在右侧菜单底部点击『+』图标,将会出现一个列表,拖拽『_GM』对象到这个位置。点击『No Function』下拉菜单,然后选择『Manager ? UnPause()』
你刚刚所做的操作就是给按钮添加了一些功能。现在,当点击按钮的时候,UnPause()函数就会在运行的时候从『Manager』脚本连接到『_GM』游戏对象。为了让你通过一个按钮来调用一个函数,那么这个函数需要声明为 public,这就是为什么我在『Manager』脚本中把所有函数设置为public。
如果你现在运行游戏,按下『esc』键,就会出现暂停菜单,然后点击『Resume』按钮。菜单将会消失,游戏将恢复。这就意味着按钮的功能起作用了。
那么,让我们其他的按钮也变得起作用吧:
在层级视图中选中重试按钮并且找到『OnClick()
点击『+』图标,添加一个新的项
拖拽『_GM』对象到游戏物体区域
点击显示『No Function』的下拉菜单
选择 Manager & Restart()
最后,在层级视图中点击退出按钮也在检视视图中找到『OnClick()』
点击『+』图标,添加一个新的项
拖拽『_GM』对象到游戏物体区域
点击显示『No Function』的下拉菜单
选择 Manager & QuitGame()
在我们完成最后一件事前。为了让『Restart』功能能够起作用,我们需要添加我们的场景到场景的索引列表中。
File & Build Settings… & 点击 “Add Open Scenes” 按钮.
这就把当前场景分配到了场景列表里了。因为这是名单中唯一的一个,它的索引就是 0,所以『Restart()』函数才会调用『Application.LoadLevel(0)』。现在,如果你运行游戏并且按下『esc』键,你可以使用所有的按钮。除非你建立程序并运行它,否则退出按钮不会被注意到。Unity 编辑器无法退出应用程序,所以『Application.Quit()』函数不会做太多。但是如果点击 File & Build & Run 然后选择你想做的设置,这个项目将会运行到一个独立的窗口,然后点击退出就会看到程序退出了。下面是关于本次教程的总结:希望你能更好地理解如何在 Unity 中创建用户界面。还有很多其他更复杂的 UI 组件,我没有在本文中讨论,我鼓励你去尝试使用它们,并且经历所有你觉得很酷的东西。一定要在 , ,,和
找到 Studica,谢谢!
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
· 14人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:}

我要回帖

更多关于 怎样做 3dui unity 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信