【Unity 05】C# 场景中有多个普通类启用时,调用该类中静态方法时,只执行一次;

更详细讲解:
【Unity 05】C# static类及其使用方法
上面有详细介绍,有个流程图很好说明了静态方法和成员方法间的调用权限关系:
在这里插入图片描述
这里记录一下自己在使用中的一些情况;

1、脚本说明

普通类TestStatic中,定义了一个static方法DebugLogName(),在该类内部Update中会调用静态方法DebugLogName

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

public class TestStatic : MonoBehaviour
{
    public static string debugName;
    // Start is called before the first frame update
    void Start()
    {
        debugName = gameObject.name;
        Debug.Log(debugName);
    }

    public static void DebugLogName(string name)
    {
        Debug.Log("打印脚本所在对象名称:" + name);
    }

    // Update is called once per frame
    void Update()
    {
        DebugLogName("这里是在类内部调用的:   " + gameObject.name);
    }
}

BtnClick脚本挂在场景中某个物体上,用来在Update中调用TestStatic类中的静态方法DebugLogName;

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

public class BtnClick : MonoBehaviour
{
    // Update is called once per frame
    void Update()
    {
        TestStatic.DebugLogName("这里是在类外部调用:   " +  TestStatic.debugName);
    }
}

2、场景布局

新建三个物体,其中两个挂载TestStatic脚本,另一个挂载BtnClick脚本;
BtnClick
TestStatic(1)
TestStatic

3、运行后打印信息

在这里插入图片描述
根据打印信息,两个TestStatic脚本内部调用DebugLogName静态方法,打印信息数量与BtnClick脚本外部调用TestStatic.DebugLogName的次数相同,而且打印列表中只有一个外部打印信息;
说明虽然场景中挂载了多个该脚本,但该脚本中的静态方法,通过外部调用时,只执行一次;而不是像内部调用静态方法那样,场景中每个脚本都会执行;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值