unity3d学习笔记(六)--单例脚本和单例类

本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢。

http://blog.csdn.net/lzhq1982/article/details/12649281


要写到英雄与怪物之间的攻击交互了,在这之前,有必要插播一下单例脚本和单例类,因为我的交互都是在单例脚本上交互的。这样有什么好处呢,降低耦合度,这是任何一个程序员都关注的事情,编程也是一门艺术嘛,试想想,如果你的交互总是建立在两个或多个脚本之间,我用你的脚本实例,你用他的脚本实例,他用不知道谁的脚本实例,反正越多就越乱,到最后你都不想维护了,尤其是公司项目,你拍拍屁股走人了,后面维护的人就要骂娘了,你都不好意思说这代码是你写的,吐槽的有点多,其实我是看了雨松大神的文章有感而发,向雨松大神致敬,我是跟他一路学过来的,这有一篇他写的有关脚本架构的文章,有兴趣的拜读一下,给个地址:Unity3D研究院之游戏架构脚本该如何来写(三十九)

在我的demo中,单例脚本和单例类都用上了,单例脚本用来处理英雄和怪物之间的交互,单例类用来过度游戏场景。下面给出代码:

单例脚本:

[csharp] view plain copy
  1. private static BattleScene instance;      
  2.     public static BattleScene GetInstance()  
  3.     {  
  4.         if (!instance) {  
  5.             instance = (BattleScene)GameObject.FindObjectOfType(typeof(BattleScene));  
  6.             if (!instance)  
  7.                 Debug.LogError("There needs to be one active MyClass script on a GameObject in your scene.");   
  8.         }  
  9.           
  10.         return instance;  
  11.     }  

单例脚本是要绑定到GameObject上的,生命周期随着这个GameObject的结束而结束,需要继承MonoBehaviour,一般在场景过度后就结束了,我把这个单例脚本绑定到了战斗场景的Main Camera上,用法也很简单,比如我这个BattleScene里有个函数hideNpcPanel(),我在Hero这个脚本中就这么用BattleScene().GetInstance().hideNpcPanel();

单例类:

[csharp] view plain copy
  1. public class Global {  
  2.     public string loadName;  
  3.       
  4.     private static Global instance;  
  5.     public static Global GetInstance()  
  6.     {  
  7.         if (instance == null)  
  8.             instance = new Global();  
  9.           
  10.         return instance;  
  11.     }  
  12. }  


单例类的脚本不用绑定到任何GameObject上,不 需要继承MonoBehaviour,生命周期是整个程序运行周期,用法和单例脚本一样,比如你可以这样用:
[csharp] view plain copy
  1. Global.GetInstance().loadName = "GameScene";  

你还可以定义一种类,甚至都不用实例化它,但里面的变量和函数要是全局的,也就是要带static的,比如同样是上面这个类:
[csharp] view plain copy
  1. public class Global {  
  2.     public static string loadName;  
  3. }  

然后你可以这样用:
[csharp] view plain copy
  1. Global.loadName = "GameScene";  

怎么用就看你的实际需求了。

单例类和单例脚本就说到这里,下一篇我们就要用单例脚本实现英雄与怪物的交互了。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值