Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元

但这个例子举得实在有点一般

[展开全文]
凡尘cc · 06-24 · 0

这一步少了个演化步骤,本来整体可以缩减为IOC变量,Init()方法,Get()方法; 然后在写成模板的需求下,增加了一个mArchitecture变量和MakeSureContainer()方法,主要是为了用来调用非静态的抽象方法Init()

[展开全文]
凡尘cc · 06-24 · 0

在讲框架的时候,还用这种跨模块的调用不合适吧

[展开全文]
凡尘cc · 06-16 · 0

所以为什么这么多次了还放在这里呢, 自身的事情自身去完成, 例如检测放回对象池, 这种事情就应该由带有AudioSource组件的物体自己去完成, 而不是大包大揽全放在AudioManager里面;

[展开全文]
凡尘cc · 06-14 · 0

至少可以创建个预制体吧,然后加载出来使用;

每次都在脚本里面写,用一种更麻烦的方式去实现

[展开全文]
凡尘cc · 06-14 · 0

这集真够水的!!

[展开全文]
凡尘cc · 06-13 · 0

为什么不把需要调用的面板都放到字典里呢,然后通过字典调用对应面板;

而不是只用来判断面板是否已经生成;

[展开全文]
凡尘cc · 06-13 · 0

我的理解是谁有需要写在谁那里呗,如果后续其他预制体有其他的需求,总不能都写在这里吧,造成本来简练的代码变得臃肿;

既然bullet有需要就写个bullet脚本呗,销毁时间也不要单独写,写个脚本统一管理和调用;

[展开全文]
凡尘cc · 06-11 · 0

其实这个顺序有点错误,小池ObjectPool只需要作为类使用就行,把具体实现方法放在池管理ObjectPoolsManager中,这样也能避免多次封装;

 

另外,为什么这里不直接使用字典查找呢,声明字典Dictionary<string, ObjectPool> poolDict,查找的时候直接使用名称poolDict["Bullet"]查找就可以了;

[展开全文]
凡尘cc · 06-11 · 0

把初始化放物体自己身上就好,Awake记录,OnEnable调用初始化就好

[展开全文]
凡尘cc · 06-11 · 0

套在里面用就可以了,

 if (Input.GetKey(KeyCode.W))
 {
     float inputX = Input.GetAxis("Horizontal");
 }

[展开全文]
凡尘cc · 06-07 · 0

这里把字典的string类型换成E_EventCommand枚举类型就行了, Dictionary<string, UnityAction>换成 Dictionary <E_EventCommand,UnityAction>

[展开全文]
凡尘cc · 06-06 · 0

发送一条消息到群里,@谁,谁执行

[展开全文]
凡尘cc · 06-06 · 0

老师啊,但是你的new MonoManager.MonoController();依旧可以访问,有需要的话,应该把这个也屏蔽掉,只允许内部访问;

[展开全文]
凡尘cc · 06-06 · 0

按钮点击音设置:

UIConfig.buttonSound = (NAudioClip)UIPackage.GetItemAssetByURL("ui://Res_Main/Tap");

[展开全文]
dplume · 06-05 · 0

在这里EndReceive前后端都需要做判断,不然前端会报错 

static void ReceiveCallback(IAsyncResult ar)
{

    try
    {

        Socket pocket = (Socket)ar.AsyncState;
        int num = pocket.EndReceive(ar);
        if (num <= 0)
        {
            Console.WriteLine("接收到的数据数量:" + num );
        }
        else {
            string msg = Encoding.UTF8.GetString(msgBuff);
            Console.WriteLine("接收到的数据:" + msg);
            Receive(pocket, ReceiveCallback);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("接收数据失败! 异常 :" + ex.ToString());
    }
}

 

[展开全文]
小乐哈 · 06-04 · 0

写个itemID = int.parse(this.name)

[展开全文]
凡尘cc · 05-21 · 0

个人思考:

  • Controller首次调用Architecture实现类.Interface时,框架中的Utility、Model和System才进行初始化,可能是为了体现有实际需求时再实例化Model、System和Utility各层的思想
  • 初始化时由于可能发生引用为空的问题 以及 字典中还未添加相关Key-Value的问题,在MakeSureArchitecture方法中先将各层初始化;并将各层添加进字典中,然后再逐个调用Init方法,并且先调用Model的Init,再调用System的Init,这样避免出现System可能再一开始就需要Model的具体值,但由于Model未调用Init方法导致System取到的值为默认空值的问题
  • 各种Command并没有像Model、System和Utility直接在一开始就添加进字典,而是有需求时再生成调用。可能是出于Command一般会很多的考虑,没有将Command做成单例

 

[展开全文]
juhkff · 05-19 · 0

int ,string ,bool本质也是一种类, 也可以输出多种信息, 再创建一个新的类作为变量放入, 其实也没什么区别

[展开全文]
凡尘cc · 05-13 · 0

感觉这一步应该放在工厂基类BaseFactory去解决,不然如果又有一个方法要用到克隆体名字的话,又要去写一遍;

放在基类里面的话,只要查询是否存在(Clone),然后删去即可

[展开全文]
凡尘cc · 04-26 · 0