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;
  • 相关阅读:
    React Children 使用
    Redux 中间件和异步操作
    Redux 核心概念
    React 的setState 异步理解
    JS 中类型和类型转换
    ES6 新增集合----- Set 和Map
    ES6 新增基本数据类型Symbol
    ES6 解构赋值
    ES6 对象增强
    ES6 中的let 和 const
  • 原文地址:https://www.cnblogs.com/2017SSY/p/13791478.html
Copyright © 2011-2022 走看看