为什么我看不懂unity3d游戏的ARPG游戏的框架代码,也把握不住大体框架脉络

欢迎大家访问游戏开发网,有您更美好!
请记住本站网址,一定要搜藏哦亲!
Unity3D ARPG游戏开发《最初的幻想》创建角色场景头像、名字等实现(二十九)
Unity3D ARPG游戏开发《最初的幻想》创建角色场景头像、名字等实现(二十九)
围观220次 评论关闭 编辑日期: 字体:
前面实现了,现在,继续美化场景。也就是放些装饰性的物品之类的:
在这儿的块桥后的大石头上边,我放了一个传送阵样的粒子效果。当然,这儿的效果当然是个装饰品了。
当玩家确认选择好自己的种族之后,就移动摄像机到这个粒子效果前边,然后,继续进行下一步。
这儿就先来修改下确认种族的对话窗口中的那个“确认”按钮的作用。当初是直接在这儿添加了一个加载游戏开始场景的代码。这儿当然不行。
所以,将先前的代码注释掉,换成itween的move代码:
public class okEvents : MonoBehaviour
public void OnClick( dfControl control, dfMouseEventArgs mouseEvent )
//Application.LoadLevel("LoadingGame");
iTween.MoveTo(Camera.main.gameObject,new Vector3(-144,92,-69),8);
123456789101112
public class okEvents : MonoBehaviour{ public void OnClick( dfControl control, dfMouseEventArgs mouseEvent )
//Application.LoadLevel("LoadingGame");
iTween.MoveTo(Camera.main.gameObject,new Vector3(-144,92,-69),8);
就是这样。
然后的话,就是像另一个取消按钮一样,定义一个确认选择种族窗口的对象,然后,当点击后,将其透明度置为0,使其不可见:
public dfPanel m_
public void OnClick( dfControl control, dfMouseEventArgs mouseEvent )
//Application.LoadLevel("LoadingGame");
iTween.MoveTo(Camera.main.gameObject,new Vector3(-144,92,-69),8);
m_panel.Opacity=0;
12345678910111213
public dfPanel m_panel;&public void OnClick( dfControl control, dfMouseEventArgs mouseEvent ){
//Application.LoadLevel("LoadingGame");
iTween.MoveTo(Camera.main.gameObject,new Vector3(-144,92,-69),8);
m_panel.Opacity=0; }&strong&
就是后续的界面了。接下来,就做个选择性别的对话窗口吧:
然后为这个对话窗口绑定一个EventBinding,当确认选择种族后,使这个窗口的显示出来:
并且去掉这个窗口Visible上的勾。
这样,当玩家确定选择了某个种族后,就会来到这个界面了。而且这个窗口我故意放满了中间的屏幕,所以是返回不了前面的界面的。
然后,新建一个全屏的Panel,用于当作确认玩家身体各项属性(比如身高、体重)的窗口:
在这儿,首先还要建立一个脚本,这个脚本用于处理随机出来的属性数据(在这儿,我将原本的“职业”改为了“种族”):
public class RandomOfBodyAttribute : MonoBehaviour {
public string m_sex="?";//性别
public string m_profession="?";//种族
public string m_bodyT//身高
public string m_bodyW//体重
public string m_//年龄
public float m_bodyTallF;//身高
public float m_bodyWightF;//体重
public int m_ageI//年龄
public bool m_ifRandom=
void Update () {
if(m_ifRandom)
m_bodyTallF=Random.Range(50,200.0f);
m_bodyWightF=Random.Range(5,100.0f);
m_ageInt=Random.Range(8,50);
m_age="年龄:"+m_ageInt+"岁";
m_bodyTall="身高:"+m_bodyTallF+"cm";
m_bodyWight="体重:"+m_bodyWightF+"kg";
m_ifRandom=
public void RandomDate()
m_ifRandom=
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
public class RandomOfBodyAttribute : MonoBehaviour {
public string m_sex="?";//性别
public string m_profession="?";//种族
public string m_bodyTall;//身高
public string m_bodyWight;//体重
public string m_age;//年龄
public float m_bodyTallF;//身高
public float m_bodyWightF;//体重
public int m_ageInt;//年龄
public bool m_ifRandom=true;
void Update () {
if(m_ifRandom)
m_bodyTallF=Random.Range(50,200.0f);
m_bodyWightF=Random.Range(5,100.0f);
m_ageInt=Random.Range(8,50);
m_age="年龄:"+m_ageInt+"岁";
m_bodyTall="身高:"+m_bodyTallF+"cm";
m_bodyWight="体重:"+m_bodyWightF+"kg";
m_ifRandom=false;
public void RandomDate()
m_ifRandom=true;
这儿首先定义了玩家的各项属性,以及一个是否已经把数据随机出来了的Bool变量。然后,在Update函数中,对是否已经随机除了数据进行判断,如果还没有的话,就随机一次玩家身体的各项属性,然后把Bool变量置为false,代表已经随机过了。
而在上边的界面那儿,底下不是还有一个“重新随机”的按钮么?而现在这个功能实现起来就比较进啊单了 ,上面代码中最下面的RandomDate函数就是用于将是否随机的变量重新置为true,使数据再次随机一次。
回到编辑器,把这个新建的脚本拖放给这个窗口最上层的那个主Panel,然后为“重新随机”按钮绑定一个EventBinding:当按钮点击时,调用这个脚本中RandomDate函数:
接着,在以上的窗口中,不是中间放了一个Label么?现在就是用到的时候了。为Label进行一个数据绑定,数据源就是顶层窗口上的那个确认玩家身体数据的脚本对象,目标则是自身的Text:
接着依样复制四个出来,就差不多了:
现在,还得要处理那两个选择了性别按钮后的情况。
新建一个“ChoiceSexButton”脚本,这个就是那两个选择性别的按钮上的脚本了。
在脚本中,首先定义几个变量:
public dfPanel m_oldP//自身的窗口对象
public GameObject m_newP//将要打开得到窗口对象
private RandomOfBodyAttribute m_RandomOfBodyA
private dfButton m_
Start函数中获取自身对象:
void Start()
m_button=GetComponent&dfButton&();
void Start()&{
m_button=GetComponent&dfButton&(); }
最后是处理当这个按钮被点击后:
public void OnClick( dfControl control, dfMouseEventArgs mouseEvent )
PlayerPrefs.SetString("p_sex",m_button.Text);
m_newPanel.GetComponent&dfTweenVector2&().Play();
m_RandomOfBodyAttribute=m_newPanel.GetComponent&RandomOfBodyAttribute&();
m_RandomOfBodyAttribute.m_ifRandom=
m_RandomOfBodyAttribute.m_sex="性别:"+m_button.T;
m_RandomOfBodyAttribute.m_profession="种族:"+PlayerPrefs.GetString("p_profession");
m_oldPanel.Hide();//处理完数据后,就隐藏掉自己的窗口
1234567891011121314151617181920
public void OnClick( dfControl control, dfMouseEventArgs mouseEvent )&{
PlayerPrefs.SetString("p_sex",m_button.Text);
m_newPanel.GetComponent&dfTweenVector2&().Play();
m_RandomOfBodyAttribute=m_newPanel.GetComponent&RandomOfBodyAttribute&();
m_RandomOfBodyAttribute.m_ifRandom=true;
m_RandomOfBodyAttribute.m_sex="性别:"+m_button.Text;;
m_RandomOfBodyAttribute.m_profession="种族:"+PlayerPrefs.GetString("p_profession");
m_oldPanel.Hide();//处理完数据后,就隐藏掉自己的窗口 }&strong&
在按钮被点击后,首先会把自己这个按钮上的文本保存在“性别”中,然后,调用新窗口的Tween动画,使新窗口显示出来,同时获取新窗口,也即是确认玩家身体数据窗口上的脚本对象,并将需要显示的性别、种族的文本改好,然后就可以隐藏自身了。
不过,这里才发现,在前面玩家点击并确认选择种族后,只是将玩家选择种族对象名保存起来了,并没有保存具体种族的名字。
所以这儿还得打开”GetPlayerNameEvents”脚本,添加一个switch语句这个个代码只需要添加到原本的保存角色对象名称的代码下方即可:
PlayerPrefs.SetString("p_PlayerName",m_playerName.name);
switch(m_playerName.name)
case "StoneKing":PlayerPrefs.SetString("p_profession","人族");
case "barbarian_Player":PlayerPrefs.SetString("p_profession","蛮族");
case "dragon_Player":PlayerPrefs.SetString("p_profession","龙族");
case "ghost_Player":PlayerPrefs.SetString("p_profession","幽魂族");
case "wolf_Player":PlayerPrefs.SetString("p_profession","狼族");
default:print ("Error!");
1234567891011121314151617181920
PlayerPrefs.SetString("p_PlayerName",m_playerName.name);&switch(m_playerName.name) {
case "StoneKing":PlayerPrefs.SetString("p_profession","人族");break;
case "barbarian_Player":PlayerPrefs.SetString("p_profession","蛮族");break;
case "dragon_Player":PlayerPrefs.SetString("p_profession","龙族");break;
case "ghost_Player":PlayerPrefs.SetString("p_profession","幽魂族");break;
case "wolf_Player":PlayerPrefs.SetString("p_profession","狼族");break;
default:print ("Error!");break; }&strong&
现在回到编辑其器,为那个显示玩家身体属性的窗口添加一个Tween动画,然后把“ChioceSexButton”分别拖放给选择“男”、“女”的按钮上边。
运行游戏测试:
接着,是这个场景中的最后一步:选择头像,输入昵称。
建立这个界面与前面的差不多:
其中的那个头像图片使用的Texture组件。
这儿位置放好了之后,就新建一个脚本“ChoicePhoto “,这个脚本用于对玩家选择时显示头像的更改。
在脚本开始,首先定义两个变量:
public dfTextureSprite m_//头像
public int m_//头像计数
然后在Start函数中判断玩家是男是女,并根据相应性别,将头像跳到相应的图片:
void Start()
//判断是男是女,以决定头像从哪个开始出现
if(PlayerPrefs.GetString("p_sex")=="男")
m_number=0;
}else m_number=65;
m_photo.Texture=(Texture2D)Resources.Load("photo/user_npcface"+m_number);
1234567891011121314151617
void Start()&{
//判断是男是女,以决定头像从哪个开始出现
if(PlayerPrefs.GetString("p_sex")=="男")
m_number=0;
}else m_number=65;
m_photo.Texture=(Texture2D)Resources.Load("photo/user_npcface"+m_number); }
然后是两个函数,用于头像旁边左右两个按钮的点击的响应:
//增加头像计数
public void PhotoAdd()
m_number++;
if(m_number&123)//如果头像超出应有的,那么就反过来
m_number=0;
m_photo.Texture=(Texture2D)Resources.Load("photo/user_npcface"+m_number);
//减少头像计数
public void PhotoReduce()
m_number--;
if(m_number&0)//如果头像超出应有的,那么就反过来
m_number=123;
m_photo.Texture=(Texture2D)Resources.Load("photo/user_npcface"+m_number);
123456789101112131415161718192021222324252627282930313233343536373839
//增加头像计数&public void PhotoAdd()&{
m_number++;
if(m_number&123)//如果头像超出应有的,那么就反过来
m_number=0;
m_photo.Texture=(Texture2D)Resources.Load("photo/user_npcface"+m_number); }&//减少头像计数&public void PhotoReduce()&{
m_number--;
if(m_number&0)//如果头像超出应有的,那么就反过来
m_number=123;
m_photo.Texture=(Texture2D)Resources.Load("photo/user_npcface"+m_number); }
主要功能就是随着玩家的点击而更换头像图片。同时判断头像是否越界,如果越界,就将头像数量置为最开始的或者最后边的。
运行游戏:
功能上肯定是没问题的。如预料般地实现了。
再把输入昵称下边放一个TextBox而已,各种设定完成就好了。
基本界面就是这样了。
然后是最后那个”进入游戏“按钮的功能。
这个功能主要就是保存玩家选择的头像信息与名字,然后读取“LoadingGame“场景正式进入游戏。
所以它的脚本也只有几句话:
public class BeginGameButtonEvents : MonoBehaviour
public string m_
public int m_
public void OnClick( dfControl control, dfMouseEventArgs mouseEvent )
PlayerPrefs.SetString("p_name",m_name);
PlayerPrefs.SetString("p_photo","photo/user_npcface"+m_photo);
Application.LoadLevel("LoadingGame");
1234567891011121314151617181920
public class BeginGameButtonEvents : MonoBehaviour{
public string m_name;
public int m_photo;
public void OnClick( dfControl control, dfMouseEventArgs mouseEvent )
PlayerPrefs.SetString("p_name",m_name);
PlayerPrefs.SetString("p_photo","photo/user_npcface"+m_photo);
Application.LoadLevel("LoadingGame");
在这个脚本中保存了Photo的数据,但是在PlayerControl,也就是玩家脚本中,并没有定义这个变量,那么现在就打开PlayerControl脚本添加上吧:
public string m_photo=”photo/user_npcface123″;
这是默认的而已,随便哪个都行,主要是在SaveGame脚本中,要加上进行保存、读取的代码:
PlayerPrefs.SetString(“p_photo”,m_player.m_photo);
m_player.m_photo=PlayerPrefs.GetString(“p_photo”);
将这个脚本直接拖给那个Button,然后分别为其添加两个数据绑定,将头像的数字号、TextBox的Text都绑定在刚建立的“BeginGameButtonEvents “相应变量中:
运行游戏效果:
好了,到这儿这个场景就差不多完成了!
对了,还有最后一步,那就是将确认身体属性的“确认”按钮与这个最后一个窗口绑定起来!
首先为这个窗口添加一个Tween动画,然后在身体属性窗口的确认按钮上绑定两个事件绑定:一个用于播放这个窗口的Tween动画,是这个窗口出现,另一个则用于将身体属性窗口隐藏掉:
就是这样。
一切搞定之后,运行游戏。
从始至终,一切都貌似没问题了!
本文固定链接:
转载请注明:
作者:游戏开发
欢迎大家访问游戏开发网!
如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!
您可能还会对这些文章感兴趣!QQ群:①群 ③群 ④群 ⑥群
扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
【手游实战项目:1.先把框架弄出来】(以附【游戏蛮牛杯】第三届开发者大赛拉开序幕unity3D模型插件 Fantasy Action RPG TilesUnity编辑器扩展插件TCG Maker Kit and Fra【浅墨Unity3D Shader编程】之四 热带雨林
版权所有,转载须注明出处!
1、为什么要
在做网络通信的时候,经常需要用到:
为了更好的帮助小蛮牛们,我们从今天开始邀请行业知名游戏公司有丰富的游戏开发经验的
  最近为了让NGUI支持这个功能,对NGUI内部做了一番加强,在不改变其设计思路的情况下,利用其原有的基础
操作: WSAD上下左右移动,按Shift加速,Alt翻滚,鼠标左键射击
过程:1.击败200个僵尸->2.击败2
  60%(原为。价格60美元)
  soundmanagerpro 3已经发布!!!
  看看有什么新SMP3
  soundman
这是自己外包做的一个unity3D特效 主要是为了和大家分享一下 让大家了解一下 unity3d特效的制作 下面是源文
资源信息:游戏蛮牛
资源名称:Glow 11 强大的外发光着色器 v1.0.6(点击进入unity3d官
最近在做产品改革,打算使用免费的开源服务器引擎, 放弃自己做的小霸王服务器。
1群已经早早的爆满了,如果有同学在前面的帖子中看到的QQ群,申请进入却迟迟没有答复的,那是因为咱们1群
百度网盘下载 包含素材 随便看看倒也可以
u3d学习路线Learning Path
课程正在更新...
博客推荐TOP 10
活跃会员HOT MEMBER
常用工具TOP 10
【游戏蛮牛杯】第三届开发者大赛拉开序幕QQ群:①群 ③群 ④群 ⑥群
扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
【手游实战项目:1.先把框架弄出来】(以附【游戏蛮牛杯】第三届开发者大赛拉开序幕unity3D模型插件 Fantasy Action RPG TilesUnity编辑器扩展插件TCG Maker Kit and Fra【浅墨Unity3D Shader编程】之四 热带雨林
版权所有,转载须注明出处!
1、为什么要
在做网络通信的时候,经常需要用到:
为了更好的帮助小蛮牛们,我们从今天开始邀请行业知名游戏公司有丰富的游戏开发经验的
  最近为了让NGUI支持这个功能,对NGUI内部做了一番加强,在不改变其设计思路的情况下,利用其原有的基础
操作: WSAD上下左右移动,按Shift加速,Alt翻滚,鼠标左键射击
过程:1.击败200个僵尸->2.击败2
  60%(原为。价格60美元)
  soundmanagerpro 3已经发布!!!
  看看有什么新SMP3
  soundman
这是自己外包做的一个unity3D特效 主要是为了和大家分享一下 让大家了解一下 unity3d特效的制作 下面是源文
资源信息:游戏蛮牛
资源名称:Glow 11 强大的外发光着色器 v1.0.6(点击进入unity3d官
最近在做产品改革,打算使用免费的开源服务器引擎, 放弃自己做的小霸王服务器。
1群已经早早的爆满了,如果有同学在前面的帖子中看到的QQ群,申请进入却迟迟没有答复的,那是因为咱们1群
百度网盘下载 包含素材 随便看看倒也可以
u3d学习路线Learning Path
课程正在更新...
博客推荐TOP 10
活跃会员HOT MEMBER
常用工具TOP 10
【游戏蛮牛杯】第三届开发者大赛拉开序幕《冰火破坏神》Unity3D引擎暗黑ARPG网游巨作_1t1t网页游戏频道-webgame|web游戏|网页游戏大全|最新网页游戏
您当前的位置: >
《冰火破坏神》Unity3D引擎暗黑ARPG网游巨作
】 【 作者/来源:
】 【 责任编辑: edit03 】
  《冰火破坏神》是完美世界使用Unity3D引擎打造的一款性暗黑式ARPG网游巨作。游戏采用真实物理碰撞引擎以及技能效果判断系统,让游戏中的战斗回馈都符合现实物理法则,同时在战斗特效以及怪物反应方面,也烘托到极致,你甚至可以听到怪物被打伤之后的哀嚎和惨叫。此外,游戏邀请了网游竞技小说第一人无罪来书写同名小说,通过不同的载体为全球玩家创造一个广阔和富有创造力的魔幻世界。
  Unity3D大赛冠军级作品 国际一流画面
  游戏画风偏向黑暗魔幻,通过精巧的色彩搭配,游戏为玩家创造了一个广阔的魔幻世界。从圣殿到废墟,从地底监狱到神秘死亡洞窟,游戏中的场景相当的丰富。由于出色的设计,《冰火破坏神》于2012年度荣获Unity3D中国首届游戏创意设计大赛冠军。
  真实物理碰撞引擎 特色技能判定
  游戏采用了Unity3D物理引擎并结合完美多年积累的优化算法,打造出精准流畅的物理模拟效果。游戏中每个攻击动作均有单独的物理判定&&这就让游戏中的战斗更加惊险,你需要预判BOSS的攻击范围才能躲避技能伤害。同时游戏中的技能效果判定也独具特色,受到冰系伤害的怪物会被减速,而火系攻击后的怪物甚至会被烧成灰烬。
  小说游戏同步 多维创造魔幻世界
  为了给全球用户形象的创造一个富有想象力的魔幻世界,游戏特地邀请了中国网游竞技小说第一人&&无罪来执笔撰写游戏的同名背景小说。小说中的主角以及冒险经历将会在游戏中完全呈现,同时小说的场景也将成为未来玩家聚集的圣地。
  契约龙族 探索随机世界的禁区
  游戏将遵循&血脉觉醒、契约龙族&这一主线,玩家将通过激活自身的龙族血脉来获得强大的力量,从而获得神龙的认可,拥有探索整个冰火世界的能力。同时,游戏采用了高度随机的设定,无论是怪物出现的种类数量,还是最终掉落的物品装备,都遵循着一定的随机规则&&也就是说,你很难刷到同一件装备。
  关于Unity3D
  Unity3D是由美国Unity Technologies开发的一个全面整合的专业游戏引擎。是目前国际上通用性最强的3D游戏开发引擎,不仅支持nVIDIA physx物理引擎,还对DirectX 和openGL拥有高度优化的图形渲染&&引擎不仅可以高效率的渲染出清晰流畅的一流画面,还可以真实模拟游戏中运动,如物体碰撞、关节活动、角色装备展现、高速运动物体的碰撞与躲避等实时状态。同时,Unity3D整合了优秀的光照烘焙技术,使场景中的光照真实、丰富,可以模拟出逼真的日夜季节光照差别。而强大的粒子系统,则让游戏中的法术、爆炸、燃烧、天气等元素更加接近现实。
  关于无罪
  中国网游竞技小说第一人,著有《无神不灭》、《SC之彼岸花》、《流氓高手》系列、《罗浮》、《通天之路》等知名网络小说。现在是纵横中文网专栏作家,拥有37万忠实粉丝。
免责声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
共3页: 上一页 1
& 相关新闻
Copyright&
All Rights Reserved&上海网游网络信息咨询有限公司 版权所有
网站导航 | 关于我们 |本科或以上
基本信息:
汇报对象:总经理
下属人数:0人
所属行业:
所属部门:技术
企业性质:私营·民营企业
企业规模:50-99人
职位描述:
ARPG Unity3D高级开发人员1、熟悉并精通Unity3D、C#。2、熟练操作Unity Animation System。3、熟悉AI。4、能独立搭建游戏框架者优先。5、有ARPG端游方面的经验。
岗位要求:
学历要求:本科或以上
性别要求:不限
语言要求:普通话
专业要求:计算机相关
年龄要求:20-60
工作年限:3年以上
薪酬福利:
职位年薪:18-36万
薪资构成:基本薪资
年假福利:国家标准
社保福利:国家标准
通讯交通:不确定
补充说明:
3年及以上Unity工作经验。熟悉移动领域的开发。2、具备良好的沟通交流能力和较好的抗压能力。3、英语熟练,阅读英文科技文档无障碍。4、热爱游戏。
企业介绍:
一家专业的手机游戏开发公司,拥有丰富的产品开发、推广和运营经验。公司于2010年成立,只用了短短1年的时间已经成为了业内最领先的手机游戏公司。 公司目前主要针对IOS和安卓平台。
在猎聘网,即有机会被企业HR和猎头推荐应聘
职位发布者
猎头等级:
服务好评率:
您好!我是猎头顾问
,很高兴认识您,有任何问题欢迎交流沟通。
在线咨询我
订阅高薪职位
微信订阅职位
扫描二维码订阅高薪职位或在微信公众账号中搜索“猎聘秘书”
ARPG Unity3D高级开发人员
常用链接:

我要回帖

更多关于 unity3d游戏 的文章

 

随机推荐