首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Unity SKFramework框架(十五)、Singleton 单例

  • 25-03-03 16:43
  • 3265
  • 9761
blog.csdn.net

目录

简介

一、普通类型单例

二、Mono类型单例


简介

单例通过类型是否继承MonoBehaviour被区分为两种,分别是普通类型单例Singleton和Mono类型单例MonoSingleton

一、普通类型单例

普通类型单例的实现通过继承ISingleton接口并实现其中的OnInit事件,该事件在单例初始化时自动调用。

假设我们有一个类A,它包含一些属性和方法

  1. using UnityEngine;
  2. public class A
  3. {
  4. public string StrValue { get; private set; }
  5. public void Func()
  6. {
  7. Debug.Log("Singleton Example.");
  8. }
  9. }

通过继承ISingleton接口将其作为单例类使用

  1. using UnityEngine;
  2. using SK.Framework;
  3. public class A : ISingleton
  4. {
  5. public string StrValue { get; private set; }
  6. public void OnInit()
  7. {
  8. StrValue = "Test";
  9. }
  10. public void Func()
  11. {
  12. Debug.Log("Singleton Example.");
  13. }
  14. }

调用示例:

  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private void Start()
  6. {
  7. string s = Singleton.Instance.StrValue;
  8. Singleton.Instance.Func();
  9. Debug.Log(s);
  10. }
  11. }

单例的释放:

  1. //释放单例
  2. Singleton.Dispose();

二、Mono类型单例

Mono类型的单例通过继承IMonoSingleton接口来实现,IsDontDestroyOnLoad属性用于指定该单例物体是否作不销毁处理。

  1. using UnityEngine;
  2. using SK.Framework;
  3. public class A : MonoBehaviour, IMonoSingleton
  4. {
  5. public string StrValue { get; private set; }
  6. public bool IsDontDestroyOnLoad { get { return true; } }
  7. public void OnInit()
  8. {
  9. StrValue = "Test";
  10. }
  11. public void Func()
  12. {
  13. Debug.Log("Singleton Example.");
  14. }
  15. }

调用示例:

  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private void Start()
  6. {
  7. MonoSingleton.Instance.Func();
  8. }
  9. }

单例的释放:

  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private void Start()
  6. {
  7. MonoSingleton.Instance.Func();
  8. }
  9. private void OnDestroy()
  10. {
  11. MonoSingleton.Dispose();
  12. }
  13. }
当代野生程序猿
微信公众号
Unity开发日志分享,欢迎关注/留言/私信。
注:本文转载自blog.csdn.net的CoderZ1010的文章"https://blog.csdn.net/qq_42139931/article/details/125069583"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top