zoukankan      html  css  js  c++  java
  • Unity 脚本通信

    情形:

    有两个类,Player,GameUI,GameUI需要访问Player的health属性,来更新UI显示生命值

    GameUI类中获得Player实例

    1.

    Player player
    GameObject playerObject = GameObject.Find("Player");
    player = playerObject.GetComponent<Player>();

    通过名字找到GameObject,接下来用GetComponent方法来获取上面挂载的脚本类,现在player就是场景中Player类脚本的实例了(注意这里不同“Player”的含义)

    如果为Player附加了“Player” tag,也可用FindGameObjectWithTag()方法寻找到Object

    2.

    player = FindObjectOfType<Player>();

    这会直接返回脚本实例的引用,更为直接

    无论何种方式,最后只需要调用 player.health 来访问属性即可

    情形:

    当player死亡时,会将自己destroy,这时需要让GameUI来绘制GameOver画面r

    为了让player类不依赖于UI类的存在,需要使用“事件”

    1.

    在定义事件Action的类中,需要导入

    using System;

    声明事件

    public event Action OnPlayerDeath;

    在Player死亡,调用Destroy之前,调用事件,检查是否是null防止报错

    if(OnPlayerDeath != null) {
        OnPlayerDeath();
    }

    在UI类中,将GameOver函数注册在事件内即可

    player.OnPlayerDeath += GameOver;
  • 相关阅读:
    第60届IMO 第5题
    第31届IMO 第2题
    洛谷【P1595 信封问题】 题解
    洛谷【P2022 有趣的数】 题解
    洛谷【P5004 专心OI
    04-----jQuery的属性操作
    03-----jQuery动画效果
    02-----jQuery的选择器
    01-----jQuery介绍
    17-----案例
  • 原文地址:https://www.cnblogs.com/2017SSY/p/13791478.html
Copyright © 2011-2022 走看看