• 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()的执行效率非常低,所以如果可能的话还是尽可能使用“直接赋值法”吧。

  • 相关阅读:
    bzoj 1030 [JSOI2007]文本生成器
    Swift 学习笔记 (闭包)
    Swift 学习笔记 (函数)
    HTML 学习笔记 JQueryUI(Interactions,Widgets)
    HTML 学习笔记 JQuery(表单,表格 操作)
    HTML 学习笔记 JQuery(animation)
    HTML 学习笔记 JQuery(盒子操作)
    HTML 学习笔记 JQuery(事件)
    HTML 学习笔记 JQuery(DOM 操作3)
    HTML 学习笔记 JQuery(DOM 操作2)
  • 原文地址:https://www.cnblogs.com/MATU/p/4601657.html
Copyright © 2020-2023  润新知