Unity3D学习笔记(十六)血条的实现
2016-02-23 17:49
781 查看
工欲善其事必先利其器,MonoDevelop实在不太符合我的口味,虽然提供了VS的语法高亮,但是对类名的高亮识别却不尽如人意。最大的问题还是因为我找不到快速格式化代码缩进的快捷键—___—!由于家里的机子经常莫名其妙抽风,导致我养成了有事没事Ctrl+E+D(自动排版)然后再Ctrl+S(快速保存)的强迫症。
在Unity的主菜单Edit→Preferences→External Tools→External Script Editor里可以设置默认的脚本编辑器,点击Browse浏览,并找到Visual Studio 2010的安装目录,选择devenv.exe即可。比如我的安装环境是64位Win7,装在D盘后路径为:
D:Program Files (x86)Microsoft Visual Studio 10.0Common7IDEdevenv.exe
成功选择好exe后就可以在列表中选择Microsoft Visual Studio 2010了。
有了趁手的工具后再回到正题,开始血条的制作:
创建两个GUI文本和两个GUI贴图,分别用来显示生物的生命值和能量值,贴图在之前我已经创建过了,因此只需要再创建文本和设置字体风格、位置之类的了。
创建一个Creature脚本组件,以后如果要添加新的怪物或者敌人,还可以重复利用这个组件。 其中包含: Health(生命值) Max Health(最大生命值) Power(能量值) Max Power(最大能量值)。
目前暂时把这个脚本附加到First Person Controller上。
注意:如果要让脚本参数能够在Unity编辑器的检视面板中设置,脚本中声明的成员变量必须为public,且不可以使用自动属性(get/set访问器),否则在Unity编辑器的检视面板中不会显示出来。
创建一个PlayerFrame脚本组件,用来获取玩家信息,并实时更新玩家头像框体的状态。 其中包含: Health Bar(生命GUI贴图) Health Text(生命GUI文本) Power Bar(能量GUI贴图) Power Text(能量GUI文本) Creature(需要获取数值的目标生物)
把这个脚本附加到层次面板中的PlayerFrame游戏对象,并且把第一个步骤中的对象拖放到相应的位置。
通过修改贴图的宽度来实现进度条的功能,以血条为例,若100%生命值时HealthBar的贴图宽度为Width, 当生命值为x%时,只要修改HealthBar的宽度为Width*x%即可。
HealthBar.pixelInset = new Rect()
{
x = HealthBar.pixelInset.x,
y = HealthBar.pixelInset.y,
width = m_StandardHealthBarWidth * Creature.Health / Creature.MaxHealth,
height = HealthBar.pixelInset.height,
};
复制代码
在Update中除了要加入实时修改进度条宽度的功能外,还要再加入实时改变状态文本的功能: HealthText.text = string.Format(“{0:f0}/{1:f0}”, Creature.Health, Creature.MaxHealth);
测试运行一下游戏,PlayerFrame已经能够正确地反应出FirstPersonController这个生物的属性值了。但是由于一直是满生命状态,看不出之前编写血条代码的正确性。赞一下Unity的即时修改参数功能,直接在测试运行游戏的状态下调整生命值属性,在测试游戏视图中会立即变更,并且在停止测试后又会还原到初始值:
其实本文中的Creature脚本还大有文章可以做,比如可以让生物支持经验值、等级、攻击防御等等,不怕做不到就怕想不到。另外虽然我使用这样的方法来制作血条的效果,只能当作一个参考思路,不能局限于这么一种方式。不过正因为同一个制作目标,而实现方式却有千千万万,多种游戏策划需求交错在一起,才导致游戏的制作成本和进度难以预估。
所以想成为一个优秀的游戏制作人,各方面的能力都必须不求专家但求行家……如此这般才能更精确地把控风险,长路漫漫其修远兮,吾将上下而求索。
在Unity的主菜单Edit→Preferences→External Tools→External Script Editor里可以设置默认的脚本编辑器,点击Browse浏览,并找到Visual Studio 2010的安装目录,选择devenv.exe即可。比如我的安装环境是64位Win7,装在D盘后路径为:
D:Program Files (x86)Microsoft Visual Studio 10.0Common7IDEdevenv.exe
成功选择好exe后就可以在列表中选择Microsoft Visual Studio 2010了。
有了趁手的工具后再回到正题,开始血条的制作:
创建两个GUI文本和两个GUI贴图,分别用来显示生物的生命值和能量值,贴图在之前我已经创建过了,因此只需要再创建文本和设置字体风格、位置之类的了。
创建一个Creature脚本组件,以后如果要添加新的怪物或者敌人,还可以重复利用这个组件。 其中包含: Health(生命值) Max Health(最大生命值) Power(能量值) Max Power(最大能量值)。
目前暂时把这个脚本附加到First Person Controller上。
注意:如果要让脚本参数能够在Unity编辑器的检视面板中设置,脚本中声明的成员变量必须为public,且不可以使用自动属性(get/set访问器),否则在Unity编辑器的检视面板中不会显示出来。
创建一个PlayerFrame脚本组件,用来获取玩家信息,并实时更新玩家头像框体的状态。 其中包含: Health Bar(生命GUI贴图) Health Text(生命GUI文本) Power Bar(能量GUI贴图) Power Text(能量GUI文本) Creature(需要获取数值的目标生物)
把这个脚本附加到层次面板中的PlayerFrame游戏对象,并且把第一个步骤中的对象拖放到相应的位置。
通过修改贴图的宽度来实现进度条的功能,以血条为例,若100%生命值时HealthBar的贴图宽度为Width, 当生命值为x%时,只要修改HealthBar的宽度为Width*x%即可。
HealthBar.pixelInset = new Rect()
{
x = HealthBar.pixelInset.x,
y = HealthBar.pixelInset.y,
width = m_StandardHealthBarWidth * Creature.Health / Creature.MaxHealth,
height = HealthBar.pixelInset.height,
};
复制代码
在Update中除了要加入实时修改进度条宽度的功能外,还要再加入实时改变状态文本的功能: HealthText.text = string.Format(“{0:f0}/{1:f0}”, Creature.Health, Creature.MaxHealth);
测试运行一下游戏,PlayerFrame已经能够正确地反应出FirstPersonController这个生物的属性值了。但是由于一直是满生命状态,看不出之前编写血条代码的正确性。赞一下Unity的即时修改参数功能,直接在测试运行游戏的状态下调整生命值属性,在测试游戏视图中会立即变更,并且在停止测试后又会还原到初始值:
其实本文中的Creature脚本还大有文章可以做,比如可以让生物支持经验值、等级、攻击防御等等,不怕做不到就怕想不到。另外虽然我使用这样的方法来制作血条的效果,只能当作一个参考思路,不能局限于这么一种方式。不过正因为同一个制作目标,而实现方式却有千千万万,多种游戏策划需求交错在一起,才导致游戏的制作成本和进度难以预估。
所以想成为一个优秀的游戏制作人,各方面的能力都必须不求专家但求行家……如此这般才能更精确地把控风险,长路漫漫其修远兮,吾将上下而求索。
相关文章推荐
- Unity3D学习笔记(十五)脚本:HelloWorld!
- Unity3D学习笔记(十四)GUI
- Unity教程之-制作闪亮的星星Star(一):动态的创建Mesh
- 使用unity创建塔防游戏(原译)(part1)
- Unity3D学习笔记(十三)导出游戏
- Unity3D学习笔记(十二)预制
- 谷歌AdMob与Unity3D
- Unity3D学习笔记(十一)物理引擎:刚体与力
- Unity3D学习笔记(十)物理引擎:碰撞器
- Unity3D学习笔记(九)模型导入
- Unity使用Hotween动画插件遇到的坑
- Unity3D学习笔记(八)动画
- Unity3D学习笔记(七)光与影
- Unity3D学习笔记(六)音乐和音效
- Unity3D学习笔记(五)湖泊与瀑布
- Unity3D学习笔记(四)天空、光晕和迷雾
- Unity3D学习笔记(三)为地形添加花草树木
- Unity3D学习笔记(二)创建地形和漫游
- 关于Unity5版本动画系统中anystate跳转重复播放当前动画解决方案
- Unity3D学习笔记(一)界面介绍