为什么不把需要调用的面板都放到字典里呢,然后通过字典调用对应面板;
而不是只用来判断面板是否已经生成;
为什么不把需要调用的面板都放到字典里呢,然后通过字典调用对应面板;
而不是只用来判断面板是否已经生成;
我的理解是谁有需要写在谁那里呗,如果后续其他预制体有其他的需求,总不能都写在这里吧,造成本来简练的代码变得臃肿;
既然bullet有需要就写个bullet脚本呗,销毁时间也不要单独写,写个脚本统一管理和调用;
其实这个顺序有点错误,小池ObjectPool只需要作为类使用就行,把具体实现方法放在池管理ObjectPoolsManager中,这样也能避免多次封装;
另外,为什么这里不直接使用字典查找呢,声明字典Dictionary<string, ObjectPool> poolDict,查找的时候直接使用名称poolDict["Bullet"]查找就可以了;
把初始化放物体自己身上就好,Awake记录,OnEnable调用初始化就好
套在里面用就可以了,
if (Input.GetKey(KeyCode.W))
{
float inputX = Input.GetAxis("Horizontal");
}
这里把字典的string类型换成E_EventCommand枚举类型就行了, Dictionary<string, UnityAction>换成 Dictionary <E_EventCommand,UnityAction>
发送一条消息到群里,@谁,谁执行
老师啊,但是你的new MonoManager.MonoController();依旧可以访问,有需要的话,应该把这个也屏蔽掉,只允许内部访问;
按钮点击音设置:
UIConfig.buttonSound = (NAudioClip)UIPackage.GetItemAssetByURL("ui://Res_Main/Tap");
在这里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());
}
}
写个itemID = int.parse(this.name)
个人思考:
int ,string ,bool本质也是一种类, 也可以输出多种信息, 再创建一个新的类作为变量放入, 其实也没什么区别
感觉这一步应该放在工厂基类BaseFactory去解决,不然如果又有一个方法要用到克隆体名字的话,又要去写一遍;
放在基类里面的话,只要查询是否存在(Clone),然后删去即可
缩放问题: 由于老师没有调整canvas的参考分辨率,所以导致了缩放的情况,此时canvas分辨率为1920*1080,面板的为1024*768
//中介模式是中间人负责处理信息,中间人的结构模型类似于星星围绕着太阳
//面板模式类似于金字塔向下型的树状方法集合,底下方法众多,但向上是逐渐收束的
注意当前的生成可以从unityEngine.Object.Instantiate访问,不需要额外向GameManager增加耦合;
也蛮好奇这里为什么不用抽象类呢,既然要用基类去声明,不用接口,那么使用抽象类不是更方便吗
这个应该是label太长把input挡住了
识别一下是左滑还是右滑,-1或+1,然后加入到坐标