【Unity技术细节】Unity零散知识点

Unity开发核心知识点整理

ModelEngine·创作计划征文活动 10w+人浏览 1.5k人参与

Unity零散知识点

属性访问修饰符描述
public int CurItemID { get; set; } - getset都是public
public int CurItemID { get; private set; } - getpublicsetprivate
public int CurItemID { get; } - 只读属性
List泛型集合移除末尾数据
// 不要用foreach遍历,要用for遍历
for (int i = ltype.Count - 1; i >= 0; i--) // 倒序遍历
{
    if (ltype[i].id == 2)
        ltype.RemoveAt(i);
}
创建一个浅表副本
// MemberwiseClone 方法,创建一个新对象,然后将当前对象的非静态字段复制到新对象。
// !!!MemberwiseClone() 返回 object 类型,直接 as T 可能返回 null
public T Clone<T>() where T : IfModel, new()
{
    return (T)this.MemberwiseClone();
}
回调委托理解

函数委托回调是从里往外传参数(尽量用unity系统提供的Action和Func),正常函数传参数是从外往里传。委托它其实就是中介模式,我们不知道要干啥就写个委托,它作为参数传进方法中,在方法中触发了之后,会返回,只要是外部用另一个函数监听(就是“=”)了,就会触发不用的函数(我们想好要做的函数)。函数、方法、动作都是一回事。

1.Action<参数> OnHit 声明
2.public void Hit()
{
    OnHit?.Invoke(gameObject);  // 使用null条件运算符
}
这是触发,谁调用"Hit()"就触发了"委托、或者叫回调"3 另一个类中
boxCtrl.OnHit = BoxHit; 监听左边里边的方法,一旦触发,则外边方法被调用
带"="表示监听,那边触发了,这边就调用"BoxHit"这个方法。
"BoxHit"方法也叫回调,可以先写,然后等待别的地方监听
svn更新失败提示cleanup的解决方法
  • 一般出现这个提示,兄弟姐妹,请首先看下你是不是正在打开着svn的某个文件,在打开某个文件的情况下,去update会造成svn更新锁定。首先关掉打开的所有svn文档,然后右键找到cleanup
  • 然后如下如执行cleanup ,记得一定要勾上break write locks
C#中反射区别

this.GetType().Assembly.GetName().版本 VS Assembly.GetExecutingAssembly().GetName().版本
this.GetType()获取当前实例的多态类型,它实际上可能是您正在调用this.GetType()的类的子类,并且该子类可能位于不同的程序集中

AssemblyA.dll:
public class Foo
{
public void PrintAssembly()
{
Console.WriteLine(this.GetType().Assembly.GetName());
Console.WriteLine(Assembly.GetExecutingAssembly().GetName());
}
}

AssemblyB.dll:
public class Bar : Foo{}

现在,如果您运行以下代码:
Bar b = new Bar();
b.PrintAssembly();

两种确定装配方式的结果将不一样;this.GetType().Assembly将返回AssemblyB(因为它的实际类型是Bar),而Assembly.GetExecutingAssembly()返回AssemblyA,因为那是包含Foo.PrintAssembly()方法的程序集。只有当包含对this.GetType()的调用的类型被密封(sealed 类不能被继承)时,才能确定它们引用相同的程序集(AssemblyA)。

// 获取当前实例真实类型所在的程序集
this.GetType().Assembly
// 获取当前执行代码所在的程序集  
Assembly.GetExecutingAssembly()
// 获取调用者所在的程序集
Assembly.GetCallingAssembly()
前后台切换检测改进
// 更完整的前后台检测
void OnApplicationPause(bool pauseStatus)
{
    if (pauseStatus)
    {
        // 进入后台
        OnGamePause();
    }
    else
    {
        // 回到前台
        OnGameResume();
    }
}
void OnApplicationFocus(bool hasFocus)
{
    // iOS平台主要用这个
}
UI适配三个关键点
  1. 根据sizeDelta(非锚点)进行适配时 UIRoot中Canvas Scaler选择Constant Pixel Size
  2. UIRoot中Canvas Scaler =>Scale with Screen Size =>1920x1080 其中Width为1(由于是横屏)
  3. 设置Scale With Screen Size是为了背包那些列表 的缩放

其他

1.动画立即切换状态:每个状态都要不勾选has exit time,以便不需要动画播放结束就可以及时切换
2.传送门效果实现原理:在门两侧放两个RenderTexture 两个碰撞检测点 两个角色初始点
3.Debug模式:可以直接看到SizeDelta,代表的是rect宽高
4.JSON读表用的泛型反序列化json加载,在plugin的dll中
5.QTE玩法(Video Player实现) quick time event eg QQ炫舞中Perfect和Good


✨随便写写

知识改变命运,可是知识没有告诉她,什么样的命运才算好。

by 八月长安

分布式微服务企业级系统是一个基于Spring、SpringMVC、MyBatis和Dubbo等技术的分布式敏捷开发系统架构。该系统采用微服务架构和模块化设计,提供整套公共微服务模块,包括集中权限管理(支持单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等功能。系统支持服务治理、监控和追踪,确保高可用性和可扩展性,适用于中小型企业的J2EE企业级开发解决方案。 该系统使用Java作为主要编程语言,结合Spring框架实现依赖注入和事务管理,SpringMVC处理Web请求,MyBatis进行数据持久化操作,Dubbo实现分布式服务调用。架构模式包括微服务架构、分布式系统架构和模块化架构,设计模式应用了单例模式、工厂模式和观察者模式,以提高代码复用性和系统稳定性。 应用场景广泛,可用于企业信息化管理、电子商务平台、社交应用开发等领域,帮助开发者快速构建高效、安全的分布式系统。本资源包含完整的源码和详细论文,适合计算机科学或软件工程专业的毕业设计参考,提供实践案例和技术文档,助力学生和开发者深入理解微服务架构和分布式系统实现。 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供学习交流使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值