目录
接下来我将制作游戏最重要的部分——UI,这只是很初步的制作
首先UI不能因为我们镜头的移动而留在原地,所以有个最基础的东西就是画布,就是承载UI的一个平台,在层次窗口右键找到UI找到画布(Canvas)创建。它会自动添加EventSystem。

假设我们现在想要显示我们之前设计的收集品玩家当前收集的个数,我们点击Canvas右键在UI中找到Text新建。(现在的新版把它移到了旧版(Lggacy)这个选项下面)
【注意:我们这里需要新建两个Text一个需要修改一个不需要】
然后我们双击画布,找到我们加入的text可以对它进行一系列修改

然后我们来到游戏画面就看见它正常显示了

接下来我们就需要实现这个数字可以随着我们吃到收集品而变化,我们点击角色控制的代码
首先为了可以控制UI的元素,我们需要使用UI的命名空间
using UnityEngine.UI;
然后创建一个用于操控UI的对象
public Text Cherrynumber;
然后同理按照之前的想法把我们需要修改的text拖进来,然后在物品收集函数中加上这样一句代码即可实现功能,这里使用ToString函数把CherryCount的int类型转化为可以显示的string类型
Cherrynumber.text = CherryCount.ToString();
宝石的数目同样处理,但这时我在测试的时候发现了一个bug就是但我把游戏屏幕全屏时UI的位置会乱窜,经过查找资料修改UI此处的锁定位置,锁定在左上角

然后我尝试把文本形式的UI换成了图像然后分别插入了樱桃和钻石的图像最后的成果

经过这几天的努力,我们的游戏已经有了基本的框架,已经可以做出一个基本的2D平台游戏,现在把代码做一些整理
PlayerController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public Rigidbody2D rb; //刚体
public Collider2D footColl; //脚部碰撞体
public Collider2D bodyColl; //身体碰撞体
public Animator anim; //动画控制器
public float speed = 10; //速度
public float jumpforce; //跳跃力
public LayerMask ground; //碰撞体过滤
public int CherryCount = 0; //收集品樱桃计数器
public int GemCount = 0; //收集品宝石计数器
public Text Cherrynumber; //控制樱桃数目显示的UI
public Text Gemnumber; //控制樱桃数目显示的UI
void Start()
{
}
void Update()
{
if (Input.GetButtonDown("Jump") && footColl.IsTouchingLayers(ground)) //实现角色跳跃
{
rb.velocity = new Vector2(rb.velocity.x, jumpforce);
anim.SetBool("jumping", true);
}
if (!Physics2D.OverlapCircle(rb.position, 0.1f, ground))
{
if (Input.GetButton("Crouch")) //实现角色下蹲
{
anim.SetBool("crouching", true);
bodyColl.enabled = false;
speed = 5;
}
else //恢复姿态
{
anim.SetBool("crouching", false);
bodyColl.enabled = true;
speed = 10;
}
}
}
private void FixedUpdate()
{
SwitchAnim();
Move();
}
void Move() //控制玩家移动函数
{
float Horizontaldirection = Input.GetAxisRaw("Horizontal"); //玩家移动方向
rb.velocity = new Vector2(Horizontaldirection * speed, rb.velocity.y);
anim.SetFloat("running", Mathf.Abs(rb.velocity.x));
if (Horizontaldirection != 0)
{
transform.localScale = new Vector3(Horizontaldirection, 1, 1); //控制角色翻转
}
}
void SwitchAnim() //玩家动画切换函数
{
anim.SetBool("idleing", false);
if (anim.GetBool("jumping"))
{
if(rb.velocity.y < 0)
{
anim.SetBool("jumping", false);
anim.SetBool("falling", true);
}
}
else if(footColl.IsTouchingLayers(ground))
{
anim.SetBool("falling", false);
anim.SetBool("idleing", true);
}
}
private void OnTriggerEnter2D(Collider2D collision) //物品收集函数
{
if(bodyColl.IsTouching(collision) && collision.tag == "cherry") //如果身体碰到了樱桃
{
Destroy(collision.gameObject); //销毁游戏体
CherryCount++; //收集品数量加一
Cherrynumber.text = CherryCount.ToString();
}
if (bodyColl.IsTouching(collision) && collision.tag == "gem") //如果身体碰到了宝石
{
Destroy(collision.gameObject); //销毁游戏体
GemCount++; //收集品数量加一
Gemnumber.text = GemCount.ToString();
}
}
}
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------