unity 一个C#类访问另一个C#类中的属性或方法

在开发Unity 3D 游戏的过程中,经常会遇到在某个C#类中访问另一个C#类中的方法或属性这样的问题;

一:实现调用方法有3种:

1. 被调用脚本函数为static类型,调用时直接用 脚本名.函数名()
2. GameObject.Find(“脚本所在的物体的名字”).SendMessage(“函数名”); //能调用public和private类型函数
3. GameObject.Find(“脚本所在的物体的名字”).GetComponent<脚本名>().函数名(); //只能调用public类型函数

下面用具体代码举个例子:

  1. 使用单例模式
public class TestStaticFun : MonoBehaviour
{
    public static TestStaticFun _instance; // static关键字。 单例模式 ,必须挂载到unity对象上

    public void Awake()
    {
        _instance = this;// 确保单例模式在使用前已被初始化
    }

    public void testHandle1(int damage)
    {
        Debug.Log("测试static单例模式调用_" + damage);
    }
}

在另一个c#代码里调用 TestStaticFun._instance.testHandle1(10);

  1. 把要访问的方法设置为静态方法
public class TestStaticFun : MonoBehaviour
{
    public static void testHandle2(int damage)
    {
        Debug.Log("测试static两个类调用_" + damage);
    }
}

在另一个c#代码里调用 TestStaticFun.testHandle2(20);

  1. 通过 SendMessage方法传递参数
public class TestStaticFun : MonoBehaviour
{
    public void testHandle3()
    {
        Debug.Log("测试SendMessage调用");
    }
}

在另一个c#代码里调用 GameObject.Find(“脚本所在的物体的名字”).SendMessage(“testHandle3”)

二:实现调用属性:

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

public class TestStaticFun : MonoBehaviour
{
    public static int playerCount = 0;
   
    public void Start()
    {
         playerCount++;
    }
}

在另一个c#代码里调用 TestStaticFun .playerCount

本人也是刚接触unity ,有不对的地方,还请各位大神指点,嘻嘻~

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值