Unity3D 实现调用其他脚本中的函数和变量


一、需求目标

  • 开发 Unity3D 项目时,经常需要在脚本 A 中调用其他脚本 B 当中已经定义的函数或者变量

二、解决方案

1.创建两个空的游戏对象和两个脚本文件

在这里插入图片描述
创建两个空的游戏对象,分别为 GameObject_ScriptA , GameObject_ScriptB
在这里插入图片描述
创建两个 C# 脚本文件, 分别为 ScriptA , ScriptB

2.编写脚本

  • 我们需要实现的目标是在 ScriptA 调用 ScriptB 中定义的变量和函数
  • 所以需要先在 ScriptB 当中声明 public 函数和 public 变量
  • 这里采用的演示实例为:
  • public void DoSomething() 函数,作用为在 Console 控制台上显示:Here is script B;
  • public string ScriptB_String = “Hello World!” 字符串;
  • 再在 ScriptA 中声明一个 ScriptB 类的实例对象 UsingScriptB
  • 之后先在 ScriptA 中写好需要调用的 ScriptB 中的函数和变量

ScriptB 代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptB : MonoBehaviour
{
    
    
    // 声明一个 public 的字符串 ScriptB_String, 内容为 Hello World!;
    public string ScriptB_String = "Hello World!";

    // 声明一个 public 的函数 DoSomething, 作用为在 Console 控制台上显示:Here is script B;
    public void DoSomething()
    {
    
    
        Debug.Log("Here is script B");
    }
}

ScriptA 代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptA : MonoBehaviour
{
    
    
    // 声明一个 ScriptB 类的实例对象 UsingScriptB
    public ScriptB UsingScriptB;

    // Update is called once per frame
    void Update()
    {
    
    
        // 调用脚本 ScriptB 中的 DoSomething 函数
        UsingScriptB.DoSomething();
        // 显示脚本 ScriptB 中的 ScriptB_String 字符串变量
        Debug.Log("ScriptB_String: " + UsingScriptB.ScriptB_String);

        Debug.Log("************************************");
    }
}

3.脚本链接对象

  • 分别将我们的 ScriptA 和 ScriptB 分别链接(直接按住脚本文件拖到游戏对象身上)到我们之前创建的游戏对象 GameObject_ScriptA 和 GameObject_ScriptB 上
  • 在 GameObject_ScriptA 上我们需要将已经链接有ScriptB 脚本的 GameObject_ScriptB 链接到我们的 UsingScriptB 对象上

在这里插入图片描述
在这里插入图片描述


三、测试结果

在这里插入图片描述

  • 运行工程我们就可以在 Console 面板上看到打印出来的日志信息了,这里的函数调用和变量打印都是在 ScriptA 中的
    Update() 函数中调用的,而函数和变量的本体是在 ScriptB 中定义和声明的
  • 从而完美地实现了我们在 脚本A 调用其他 脚本B 中定义的函数和变量
  • 当然,这只是一个案例演示,大家可以通过这种方法轻松自如地在 Unity 项目中不同的脚本之间调用各种其他脚本中你想要的函数、变量等…
  • 这样不仅仅可以增加脚本之间的互通性,也可以节省很多不必要重复定义

Good Luck !

猜你喜欢

转载自blog.csdn.net/weixin_46992165/article/details/126291624