Unity-3d Day06

继续搞单例模式  在实战中体会了一下单例模式 

唉  还是搞不懂  虽然知道了怎么写  但在哪用还是很模糊  等以后写多了就好了吧

回顾一下,单例模式的定义是:保证一个类只有一个实例,并且提供一个访问它的全局访问点。单例对象的类必须保证只有一个实例存在。在我们的场景中,全局脚本的对象只会创建一次,保证单例,然后它(全局单例类)提供给各个脚本访问单例对象的方法,并且所有其他脚本的公共数据都会存储在全局单例脚本中。

单例模式可以很方便地提供数据、对象的访问方式,单例仅允许被实例一次,这就保证了他在各个程序模块间的唯一性。大家可能会想到全局变量,是的,确实可以用全局变量来做。不过为了提供代码的可维护性,全局是有很大局限的。你又想在Unity里经常还可Static 变量会共享信息,不过你还发现他被声明在各处。对的,不好找,不好维护。

至于使用嘛   我也在研究   基本上都是在控制游戏的流程啊   背景音乐啊  切换场景啊什么的时候用到单例模式

以下是模型的单例模式:模型的单例不能有构造器  不 能 有 构 造 器 !   而且要注意Awake和start的执行顺序。

using UnityEngine;
using System.Collections;

//对象单例模式
public class GameManager : MonoBehaviour
{
    private static GameManager m_manager;

    public static GameManager M_manager
    {
        get
        {
            if (m_manager == null)
            {
                m_manager = new GameObject("GameManager").AddComponent<GameManager>();
            }
            return m_manager;
        }
    }
    //注意执行顺序
    void Awake()
    {
        //添加音频组件
        gameObject.AddComponent<AudioSource>();
    }
    // Use this for initialization
    void Start()
    {

    }
    //添加音频
    public void PlayAudio(AudioClip clip){
        audio.PlayOneShot(clip);
    }
    // Update is called once per frame
    void Update()
    {

    }
}

在摄像机脚本中简简单单调用一下就好了

 void Start()
    {
        GameManager manager = GameManager.M_manager;
        manager.PlayAudio(clip);

        ModelManager modelManager = ModelManager.M_mamager;
    }


还有对象的单例,用法和c#时候没什么两样

using UnityEngine;
using System.Collections;

//模型单例
public class ModelManager{
    private static ModelManager m_mamager;
    public static ModelManager M_mamager
    {
        get {
            if (m_mamager == null) {
                m_mamager = new ModelManager();
            }
            return ModelManager.m_mamager; 
        }
    }
    public Mouse[] mouses = new Mouse[10];
    public ModelManager() {
        for (int i = 0; i < 10; i++)
        {
            mouses[i] = new Mouse();
        }
    }
    
}


下面是一些Application类的使用    感觉还是一样  都是公式   :

using UnityEngine;
using System.Collections;

public class GameController : MonoBehaviour
{
   public AudioClip clip;
 
    // Use this for initialization
    void Start()
    {
        GameManager manager = GameManager.M_manager;
        manager.PlayAudio(clip);

        ModelManager modelManager = ModelManager.M_mamager;
    }

    // Update is called once per frame
    void Update()
    {

    }
    void OnGUI() {

        GUILayout.Label(Application.platform.ToString());            
        GUILayout.Label(Application.runInBackground.ToString());     
        GUILayout.Label(Application.dataPath.ToString());
        GUILayout.Label(Application.persistentDataPath.ToString());
        GUILayout.Label(Application.temporaryCachePath.ToString());
        GUILayout.Label(Application.loadedLevel.ToString());
        //切换场景
        if (GUILayout.Button("level")) {
            //销毁之前场景
            Application.LoadLevel(1);
            //不销毁之前场景
            Application.LoadLevelAdditive(1);
        }
        //退出
        if (GUILayout.Button("quit"))
        {
            Application.Quit();
        }
        //链接 打开网页
        if (GUILayout.Button("baidu"))
        {
            Application.OpenURL("http://www.baidu.com");
        }
        
    }

}

今天就研究这么多啦  good night buddies!

转载于:https://www.cnblogs.com/little-sun/p/4379118.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-Unity-WebGL 是一个具有极高可扩展性和灵活性的 Unity3D web 端开发框架,它将 Vue.js 与 Unity Web Player 和 WebGL 等技术相结合,为开发者提供了最佳的解决方案。 Vue-Unity-WebGL 框架具有很高的兼容性和易用性,开发者可以更加灵活地应用该框架来定制自己的项目。由于该框架具备了许多优秀的特性,如自适应布局、多平台支持等,使得开发者可以轻松地实现用户体验和开发效率的提升。此外,Vue-Unity-WebGL 框架不仅提供了可视化开发工具,还提供了完整的运行环境,为开发者提供了优秀的开发体验。 Vue-Unity-WebGL 框架的另一个重要特点是其大量的插件与扩展功能,这些插件和扩展可以为项目的开发和管理提供坚强的技术支持。比如,通过 vue-router 可以控制路由,Vue-Unity-WebGL 可以协作处理组件数据和 Unity3D 渲染等复杂的操作,而 Vuex 则可以使开发者方便地处理应用数据流和组件状态的管理。这些插件和扩展功能极大地提高了 Vue-Unity-WebGL 框架的可扩展性和灵活性,使得开发者可以更加容易地进行定制。 综上所述,Vue-Unity-WebGL 框架是一个快速、可靠且强大的解决方案,这使得开发者能够轻松地编写出高质量的 Unity3D web 应用程序。该框架具有大量的功能,实现可扩展性、灵活性、易用性和可维护性,比其他框架更具有竞争力。在未来的发展中,Vue-Unity-WebGL 框架将会被更多的开发者喜爱和应用,并在技术社区中拥有更广泛的影响力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值