热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Unity中静态方法扩展的实用技巧与优化策略

本文探讨了在Unity中使用静态方法扩展的实用技巧和优化策略。首先介绍了静态方法在Unity中的作用,然后详细阐述了常见的实现方式,包括通用写法和静态脚本的应用。通过这些方法,开发者可以提高代码的可读性和维护性,同时优化性能。文中还提供了具体的示例和最佳实践,帮助读者更好地理解和应用这些技术。

在这里插入图片描述


文章目录

  • 🟥 Unity中静态方法的作用:
  • 🟧 第一种通用写法:
    • 🚩 静态脚本:
    • 🚩 如何使用静态脚本:
  • 🟨 第二种拓展写法:
    • 🚩 为什么要用?
    • 🚩 怎么用?
    • 🚩目标脚本:
    • 🚩如何使用目标脚本:




🟥 Unity中静态方法的作用:

让你不必再GetComponent<目标脚本>().方法&#xff0c;而是直接 目标脚本.方法&#xff0c;便可直接使用目标脚本的内部方法。

使得写法更加地方便。




&#x1f7e7; 第一种通用写法&#xff1a;

如何使用&#xff1f;

静态脚本放在Assets里&#xff0c;不用挂在场景中。

使用脚本 Test_02 挂在场景中。


&#x1f6a9; 静态脚本&#xff1a;

using UnityEngine;public class Test_01
{public static int[] a&#61;new int[6];public static void Skode_Debug(){Debug.Log("hello");}
}




&#x1f6a9; 如何使用静态脚本&#xff1a;

using UnityEngine;public class Test_02 : MonoBehaviour
{private void Start(){Debug.Log(Test_01.a.Length);Test_01.Skode_Debug();}
}




&#x1f7e8; 第二种拓展写法&#xff1a;


&#x1f6a9; 为什么要用&#xff1f;


  • 用了这个SingletonBase写法&#xff0c;就可以让静态脚本中&#xff0c;所有静态方法都不用写static。
  • 为了项目中脚本更有逻辑&#xff0c;我们特别将静态方法都摘成各个功能的脚本&#xff0c;这些脚本用这种写法&#xff0c;便可少写代码&#xff0c;且条理。
    什么脚本能用&#xff1f; 用来存放&#xff0c;不涉及MonoBehaviour生命周期方法的&#xff0c;只存放静态方法的脚本。

因为继承了SingletonBase&#xff0c;目标脚本便不可继承MonoBehaviour。

目标脚本便不可挂在场景中&#xff0c;不可使用MonoBehaviour生命周期&#xff08;小声BB&#xff09;





&#x1f6a9; 怎么用&#xff1f;

1.SingletonBase、静态脚本放在Asset即可&#xff0c;不必挂在场景
2.使用脚本&#xff0c;挂在场景即可。

SingletonBase脚本

public class SingletonBase<T> where T : new()
{public static T Single { get; protected set; } &#61; new T();
}




&#x1f6a9;目标脚本&#xff1a;

using UnityEngine;public class Test_01 : SingletonBase<Test_01>
{public void Skode_Debug(){Debug.Log("hello");}
}




&#x1f6a9;如何使用目标脚本&#xff1a;

using UnityEngine;public class Test_02 : MonoBehaviour
{private void Start(){Debug.Log(Test_01.Single.a.Length);Test_01.Single.Skode_Debug();}
}





大家还有什么问题&#xff0c;欢迎在下方留言&#xff01;


在这里插入图片描述
如果你有 技术的问题 项目开发

都可以加下方联系方式

和我聊一聊你的故事&#x1f9e1;


推荐阅读
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
  • 本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ... [详细]
  • 处理Android EditText中数字输入与parseInt方法
    本文探讨了如何在Android应用中从EditText组件安全地获取并解析用户输入的数字,特别是用于设置端口号的情况。通过示例代码和异常处理策略,展示了有效的方法来避免因非法输入导致的应用崩溃。 ... [详细]
  • 本文详细介绍了如何在Spring框架中设置事件发布器、定义事件监听器及响应事件的具体步骤。通过实现ApplicationEventPublisherAware接口来创建事件发布器,利用ApplicationEvent类定义自定义事件,并通过ApplicationListener接口来处理这些事件。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 洛谷 P4009 汽车加油行驶问题 解析
    探讨了经典算法题目——汽车加油行驶问题,通过网络流和费用流的视角,深入解析了该问题的解决方案。本文将详细阐述如何利用最短路径算法解决这一问题,并提供详细的代码实现。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文介绍了一种使用SQL Server存储过程来实现基于单一条件的高效分页查询的方法。通过示例代码,详细说明了如何构建和执行这种分页查询。 ... [详细]
  • 机器学习实践:逻辑回归与过拟合控制
    本文深入探讨了逻辑回归在机器学习中的应用,并详细解释了如何通过正则化等方法来有效避免模型的过拟合问题。 ... [详细]
author-avatar
做普通的自我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有