查看: 2208|回复: 2
打印 上一主题 下一主题

[其他] Unity3D角色生产的代码

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-8-30 01:59:25 |只看该作者 |倒序浏览
  1. using UnityEngine;
  2. using System.Collections;
  3. using System;

  4. /// <summary>
  5. /// 玩家角色生成器
  6. /// </summary>
  7. public class CharacterGenerator : MonoBehaviour {
  8.     /// <summary>
  9.     /// 玩家的角色类
  10.     /// </summary>
  11.     private PlayerCharacter _player;
  12.     /// <summary>
  13.     /// 开始总共的技能点
  14.     /// </summary>
  15.     private const int Starting_Point = 25;
  16.     /// <summary>
  17.     /// 没做基本属性最低为5
  18.     /// </summary>
  19.     private const int Min_Starting_Attribute_value = 5;
  20.     /// <summary>
  21.     /// 基本属性的起始值
  22.     /// </summary>
  23.     private const int Starting_value = 5;
  24.     /// <summary>
  25.     /// 可分配的属性点
  26.     /// </summary>
  27.     private int pointsLeft;

  28.     void Start()
  29.     {
  30.         //实例化角色,并命名为Player。请务必使游戏对象的名称叫Player,因为我们后面的代码中使用到了这个名字
  31.         GameObject obj = Resources.LoadAssetAtPath("Assets\\Prefabs\\Player\\Sample Hero\\Player_Simple.prefab", typeof(GameObject)) as GameObject;
  32.         obj = Instantiate(obj) as GameObject;
  33.         obj.name = "Player";

  34.         //检查持久化文本里是否保存了历史记录
  35.         string _PlayerName = PlayerPrefs.GetString("Player Name", "");
  36.         Debug.LogWarning("玩家的名称" + _PlayerName);
  37.         //如果没有保存,则开启属性面板,配置属性
  38.         if (_PlayerName == "")
  39.         {
  40.             _player = obj.GetComponent<PlayerCharacter>();
  41.             pointsLeft = Starting_Point;
  42.             for (int i = 0; i < Enum.GetValues(typeof(AttributeName)).Length; i++)
  43.             {
  44.                 //设置基础属性的基本值
  45.                 _player.GetPrimaryAttribute(i).BaseValue = Starting_value;
  46.                 //更新可分配的属性点
  47.                 pointsLeft -= Starting_value;
  48.             }
  49.             _player.Points = pointsLeft;
  50.             //更新生命属性和技能属性
  51.             _player.StatUpdate();

  52.             //加载属性分配的窗体
  53.             GameObject root = GameObject.Find("UI Root/Anchor_Center");
  54.             GameObject panel = Resources.LoadAssetAtPath("Assets\\Prefabs\\Health\\WindowPanel.prefab", typeof(GameObject)) as GameObject;
  55.             panel = Instantiate(panel) as GameObject;
  56.             panel.transform.parent = root.transform;
  57.             panel.transform.localScale = Vector3.one;
  58.             panel.transform.localPosition = Vector3.zero;
  59.             panel.GetComponent<PlayerAttribute>().playChacter = _player;
  60.         }
  61.         else
  62.         {
  63.             Application.LoadLevel(1);
  64.         }
  65.         //因为这个对象在做完以上的工作后就没有作用了。因此我们把它销毁掉
  66.         StartCoroutine("KillMySelf");
  67.     }

  68.     #region 一秒后自杀
  69.     /// <summary>
  70.     /// 一秒后自杀
  71.     /// </summary>
  72.     IEnumerator KillMySelf()
  73.     {
  74.         yield return new WaitForSeconds(1);
  75.         Destroy(gameObject);
  76.     }
  77.     #endregion
  78. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-8-30 03:16:11 |只看该作者
THanks for sharing this !
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-12 10:26 , Processed in 0.090720 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部