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

[其他] sendmessage的用法

[复制链接]
may    

8830

主题

80

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52312
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2014-9-28 00:40:19 |只看该作者 |倒序浏览
一个gameobject下有多个代码组件,不同代码里不同的函数可以用sendmessage调用,传参。还有种情况,两个不同的游戏对象挂载同一个代码,一片代码里用枚举类型的来区分不同的gameobject,两个不同的gameobjec去调用某些方法时,也需要用sendmessage,这是今天的一部分代码。很感谢带我的人给我的指导。
public enum AIType
  {
    玩家,
    敌人
  }
  public AIType aiType = AIType.玩家;
  //玩家控制
  public PlayerControl player;
  //ai控制
  public EnemyControl enemy;
  //淹死的位置
  public Transform w_down;

  //敌人
  public GameObject[] enemys;

  public TextMesh showSkill;
  private float old_speed = 0;

  private float skillColdTime = 12.0f;
  private float tempTime = 0;
  // Use this for initialization
  private GameObject playerobj;
  void  Start ()
  {
    if (aiType == AIType.玩家)
      old_speed = player.Move_Speed;
    else {
      playerobj = GameObject.FindWithTag ("playerbody");
      old_speed = enemy.Move_Speed;
    }
  }

  // Update is called once per frame
  float dis;
  void Update ()
  {
    if (aiType == AIType.敌人) {
      dis = Vector3.Distance (playerobj.transform.position, transform.position);
//      Debug.Log (dis);
      if (dis < 15) {
        if (Time.time > tempTime + Random.Range (5, 10)) {
          tempTime = Time.time + skillColdTime;
          StartCoroutine ("ReleaseSkill", Random.Range (100, 110));
        }
      }
    }
  }
  /// <summary>
  /// Skill the specified Type_ and skill_id.
  /// </summary>
  /// <param name="Type_">Type_.</param>
  /// <param name="skill_id">Skill_id.</param>
  public void Skill (string str)
  {
    string[] strs = str.Split ('_');
    switch (strs [0]) {
    case "rel"://释放技能
      StartCoroutine ("ReleaseSkill", int.Parse (strs [1]));
      break;
    case "get"://得到技能状态
      StopCoroutine ("GetSkillAction");
      StartCoroutine ("GetSkillAction", int.Parse (strs [1]));
      break;
    default:
      break;
    }
  }

  /// <summary>
  /// 触发技能
  /// </summary>
  /// <param name="skill_id">Skill_id.</param>
  IEnumerator ReleaseSkill (int skill_id)
  {
    switch (skill_id) {
    case 101://反向
      if (aiType == AIType.敌人)
        playerobj.SendMessage ("Skill", "get_101");
      break;
    case 102://减速
      if (aiType == AIType.敌人)
        playerobj.SendMessage ("Skill", "get_102");
      break;
    case 103://加速
      Skill ("get_103");
      break;
    case 104://隐身
      yield return new WaitForSeconds (1);
      break;
    case 105://定身
      if (aiType == AIType.敌人)
        playerobj.SendMessage ("Skill", "get_105");
      break;
    case 201://无敌
      if (aiType == AIType.玩家 && transform.position.y > w_down.position.y) {
        Skill ("get_201");
      }
      break;
    case 202://气球
      Skill ("get_202");
      //yield return new WaitForSeconds (1);
      break;
    case 203://减速
      if (aiType == AIType.玩家) {
        Debug.Log (aiType);
        //enemy.Move_Speed *= 0.5f;
        enemys = GameObject.FindGameObjectsWithTag ("enemybody");
        foreach (GameObject obj in enemys) {
         
          obj.SendMessage ("Skill", "get_203");
          Debug.Log ("messagesend");
        }
        //yield return new WaitForSeconds (5.0f);
        
        //enemy.Move_Speed = old_speed;
      }
      //yield return new WaitForSeconds (1);
      break;
    case 204://加速
      if (aiType == AIType.玩家) {
        Skill ("get_204");
      }
      break;
    case 303://加速
      if (aiType == AIType.玩家) {
        StartCoroutine (player.FenShen ());
      }
      break;
    }
    yield return new WaitForSeconds (0.1f);
  }


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

33

主题

1

听众

2680

积分

中级设计师

Rank: 5Rank: 5

纳金币
559
精华
0

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

沙发
发表于 2014-9-29 09:21:59 |只看该作者
三维游戏对象实现逐渐淡化的效果
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

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

板凳
发表于 2014-10-2 22:37:55 |只看该作者
Great share code thanks !
回复

使用道具 举报

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

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-19 13:14 , Processed in 0.086480 second(s), 32 queries .

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

© 2008-2019 Narkii Inc.

回顶部