zoukankan      html  css  js  c++  java
  • Unity3d 脚本相互调用

    unity中三种调用其他脚本函数的方法

    第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名()。很不实用……

    第二种,GameObject.Find("脚本所在物体名").SendMessage("函数名");  此种方法可以调用public和private类型函数

    第三种,GameObject.Find("脚本所在物体名").GetComponent<脚本名>().函数名();此种方法只可以调用public类型函数

    Unity3d 脚本相互调用 

    调用其他实例的脚本是一种很常用的需求,在Unity3D中实现起来也有多种方法,假设在ScriptB有一个DoSomething函数,如下所示:


    using UnityEngine;
    public class ScriptB : MonoBehaviour {

    public void DoSomething()  { 
     Debug.Log("Hi there"); 
     }

     }

    在ScriptA中如果要访问某个GameObject的ScriptB脚本中的DoSomething函数:

    using UnityEngine;
       public class ScriptA : MonoBehaviour { 
     public ScriptB other;
      void Update()  { 
      other.DoSomething(); 
      }
      }

    注意ScriptA有一个ScriptB类型的公共变量,这是一个绝妙的小技巧,如此一来你便可以通过编辑器拖拽任何含有ScriptB这一脚本的GameObject至该变量上(因为是public的,所以暴露于编辑器界面中),Unity会自动识别你需要赋值的不是那个GameObject,而是它所包含的ScriptB脚本。


    除此之外,如果你不喜欢这种在编辑器中直接赋值的办法,你可以通过GameObject.Find(“somename”) 来获取GameObject:

    GameObject go = GameObject.Find("somegameobjectname");
       ScriptB other = (ScriptB) go.GetComponent(typeof(ScriptB));
       other.DoSomething();

    不过需要注意的是GameObject.Find()的执行效率非常低,所以如果可能的话还是尽可能使用“直接赋值法”吧。

  • 相关阅读:
    雨课堂知识点总结(六)
    软件构造雨课堂知识点总结(五)
    软件构造雨课堂知识点总结(四)
    软件构造雨课堂知识点总结(三)
    0-N-0计数的优化写法
    Nginx TP5环境配置
    小程序跳转H5及其他页面
    mysql中varchar类型和datetime类型字段进行比较
    微信小程序开发者工具更新后报很多错误
    php后台解决跨域
  • 原文地址:https://www.cnblogs.com/MATU/p/4601657.html
Copyright © 2011-2022 走看看