【日志】网络传输协议TCP/UDP/HTTP // unity泛型类单例模式

2024.10.23

【力扣刷题】

暂无

【数据结构】

暂无

【其他】

TCP(传输控制协议)(长连接):

TCP 是一种面向连接的、可靠的协议,它通过三次握手建立连接,客户端发送请求到服务器,服务器响应并返回数据,确保数据的可靠传输。
UDP(用户数据报协议)

UDP 是一种面向无连接的协议,它不需要建立连接,直接发送数据包。
HTTP(超文本传输协议)(短连接)

HTTP是建立在TCP协议上。HTTP协议是无连接的,即每次请求和响应之间是独立的,服务器不会保存客户端的状态信息。

【Unity】

泛型单例模式

cs 复制代码
// 泛型单例模式
public class Singleton<T> where T:new()
{
    protected static T m_Instance;
    public static T instance
    {
        get
        {
            if(m_Instance == null)
            {
                m_Instance = new T();
            }
            return m_Instance;
        }
    }
}
cs 复制代码
public class SingletonMono<T> : MonoBehaviour where T : SingletonMono<T>
{
    private static T m_Instance;
    public static T instance
    {
        get
        {
            if(m_Instance == null)
            {
                m_Instance = FindObjectOfType<T>();
                if(m_Instance == null)
                {
                    GameObject singleObj = new GameObject("Singleton",typeof(T));
                    m_Instance = singleObj.AddComponent<T>();
                }
            }
            return m_Instance;
        }
    }
    public virtual void Awake()
    {
        // 将当前gameObject设置为常驻对象
        DontDestroyOnLoad(gameObject);
        if (m_Instance == null)
        {
            m_Instance = this as T;
        }
        else
        {
            GameObject.Destroy(gameObject);
        }
    }
}

这段代码定义了一个泛型类 SingletonMono<T>,它继承自 MonoBehaviour,并且要求 T 必须是 SingletonMono<T> 的子类。在这个单例模式的实现中,Instance 属性会检查是否已经有一个该类型的实例存在。如果没有,它会创建一个新的游戏对象,并添加相应的组件。这样,你可以确保在整个游戏场景中,只有一个该类型的实例存在。使用这种方式,你可以确保你的单例组件在整个场景中只有一个实例,并且可以通过Instance 来访问它。

最后记得唤醒该单例模式。

从缓存加载资源

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ResMgr : SingletonMono<ResMgr>
{
    // 用于缓存已加载好的资源
    // 创建哈希表对象
    private Hashtable m_HashTable = null;
    private Hashtable hashTable
    {
        get
        {
            if(m_HashTable == null)
            {
                m_HashTable = new Hashtable();
            }
            return m_HashTable;
        }
    }

    // 用于从Resources中加载相关预制体
    public GameObject LoadAsset(string path, Transform parent = null, bool isCache = false)
    {
        GameObject prefab = null;
        // 通过哈希表判定该预制体是否已经缓存
        if(hashTable.ContainsKey(path))
        {
            prefab = hashTable[path] as GameObject;
        }
        else
        {
            prefab = Resources.Load<GameObject>(path);
            if(isCache)
            {
                hashTable.Add(path,prefab);
            }
        }

        // 实例化对象
        GameObject go = Instantiate(prefab, parent);
        return go;
    }
}

需要调用时就可以直接使用单例调用。

cs 复制代码
GameObject obj = ResMgr.instance.LoadAsset(path, transform);

【奇思妙想】

我感觉《斗罗大陆》、《斗破苍穹》这一类小说,完全可以改成一个开放世界的RPG游戏。目前游戏界里能看到成熟的例子就有《原神》,那既然都有原神了,我为什么还要提呢?我单纯的觉得这些小说完全可以打造一批属于我们国家的超级3A大作,这些小说作者都还健在,并且这些玄幻类的小说自带废柴成长,完整的世界观,以及无数可以想象的地方。

这体量完全就是一个超级3A,超过一千多章节的内容,可以分多少DLC,而且玩法还能不一样,还能探索世界,那Boss要人有人,要怪物有怪物,加上国内比国外更好的优质服务器,完全可以和好朋友一起开黑打Boss。

如果是做《斗破苍穹》完全可以是做主线、支线剧情,还能顺便探索一下这个斗破世界,收集异火,去看一看自己的后宫佳丽,打一打除主线剧情外的其他Boss以及隐藏Boss,这本小说好像还有炼药师吧,如果炼药系统做得有创意并且不枯燥的话,将会是一个耐玩的系统。

如果是做《斗罗大陆》那就是玩魂环了,根据书中的大师的《十大核心竞争理论》就能开发基本的玩法,玩家选择不同的职业就应该只能玩一种职业(准确来讲是不能再战斗过程中切换角色),这样的话是希望提高玩家对拥有队友的需求,对魂环的追求。魂环系统,魂骨系统,宗派系统(氪金点),以及各种试炼,但凡看过原著或者动漫,玩这个游戏恐怕都想搞个封号斗罗回家。

接下来就是各种人物,NPC,相关敌对对象和场景的问题了,关于人物服饰,我想无需多言,包走国风潮流或者二次元路线的,这可是一个能向世界展示我们文化底蕴的机会,现在的审美观都已经被西方冲的稀稀跨跨的,现在不是钱突很多,就是夹子御姐小萝莉。国外的3A女性角色有被sweetBaby刻意改丑,但我们完全不受限制,再说老外也喜欢漂亮的女性角色,像《黑神化:悟空》的蜘蛛精四妹,至少符合国内的玩家审美才是正道。

剩下的除了技术难题,就剩策划和创意问题了,这可以主打一个剧情向的,每年出一个DLC来一步一步补全小说中的内容,跟追番一个道理,也可以做自由开放探索世界,就是不知道这要是做出来得花多少时间。


------每天努力十五分钟,一年就努力了5475分钟,也就是91.25小时。(记得乘上0.7,这是扣去双休和法定的节假日的时间的)

相关推荐
TT哇22 分钟前
【Java】数组的定义与使用
java·开发语言·笔记
黑叶白树2 小时前
包和模块(上) python复习笔记
开发语言·笔记·python
L_Z_J_I2 小时前
超子物联网HAL库笔记:多指针定位+循环收发缓冲区方案设计
笔记
我是水怪的哥2 小时前
一些有用的科研数据网站
经验分享·笔记
zhilanguifang3 小时前
ERC论文阅读(02)--SAC;-LSTM论文阅读笔记
论文阅读·笔记·lstm
尘佑不尘6 小时前
shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘
数据库·笔记·mongodb·web安全·jenkins·1024程序员节
Iqnus_1237 小时前
vue下载安装
前端·vue.js·笔记
CLCNboss7 小时前
Mac安装Ruby
开发语言·经验分享·笔记·macos·ruby
呵呵哒( ̄▽ ̄)"9 小时前
尚硅谷-react教程-求和案例-优化3-整合UI组件和容器组件-总结优化-笔记
前端·笔记·react.js
l1x1n010 小时前
【IT基础中英笔记】符号系统与数据类型 | CompTIA ITF+
笔记·学习