unity及c#学记笔记

本文探讨了设计模式的六大原则,重点介绍了Unity中的单例模式应用,包括场景切换时的数据保持,以及粒子效果的配置和深度优先查找Transform的方法。此外,还讲解了this关键字在扩展功能中的实用技巧。
摘要由CSDN通过智能技术生成

1.设计模式六大原则

1.单一职责原则
单一职责原则是实现高内聚、低耦合的指导方针,保持类中职责单一,方便拓展。
2.开发封闭原则
指对拓展开放,对修改封闭,使程序更好的更新他的功能。
3.里氏替换原则
所有的基类都能透明的使用其子类。
扩充:保持基类与子类的字段与方法一致可以使其用基类完美的使用子类实现多态,
如果子类有属于自己的独特方法,则需实例化子类而不是通过基类实例化。
4.依赖倒转原则
抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
5.迪米特原则
一个类与另一个类发生联系使用第三个类进行沟通,减少类与类之间的聚合。
6.合成聚合复用原则
能使用聚合就不去使用继承,提高代码的复用和灵活性。
总结:六大原则都是为了“弱耦合,强聚合”服务。

2.好用的单例模式

对于unity中的场景切换,我们经常会需要使用一些切换场景后依旧可以使用甚至是从其他场景
继承过来变量的值,这时可以使用函数

 DontDestroyOnLoad(Object Target);//切换场景时不会被清除

使变量唯一便可使用单例模式,代码如下:

 private static GameManager Instance;//单例模式只让存在一个
 void Awake()//在启动时检查
 {
     CheckGameobject();
     CheckSingle();
 }
    
 private void CheckGameobject()//删掉tag不是GM的Gamemanger
 {
     if (tag=="GM")
     {
         return;
     }
     Destroy(this);
 }
 private void CheckSingle()//删掉多余的GameManager
 {
     if (Instance==null)
     {
         Instance = this;
         DontDestroyOnLoad(gameObject);
         return;
     }
     Destroy(this);
 }

3.unity粒子效果的使用

1.细节提示
在这里插入图片描述
1处调小可以使图标变小(例如摄像机图标)
2处可以不显示边框
一,最主要的设置界面

Duration 为粒子效果的持续时间
Looping 为是否循环
Start 为单个粒子的生命周期(可以存在的时间)
Start Speed 为粒子开始时的速度 为0可以让粒子停留在原处
Max Particals 为生成的最大粒子数
二,Render(渲染,着色)
在这里插入图片描述
放入材质球可以让粒子改变样式,像什么光阵之类的都能更改
三,随着时间使粒子变化大小
在这里插入图片描述
调节曲线来实现大小的变换

4.拓展Tarnsform使用深度优先算法

代码如下:

 public static Transform DeepFind(this Transform parent,string TargetName)//深度优先查找
    {
        Transform TeamTransform = null;
        foreach (Transform child in parent)
        {
            if (child.name==TargetName)
            {
                return child;
            }
            else
            {
                TeamTransform = DeepFind(child,TargetName);
                if (TeamTransform!=null)
                {
                    return TeamTransform;
                }
            }
        }
        return null;
    }

使用方法如下代码所示:

public GameObject WHR; 
 WHR = transform.DeepFind("WeaponHandleR").gameObject;//以自身作为父物体往下面找weaponHandleR

5.this的拓展作用

代码依旧为上一个代码,

public static class Helper 

{ 
    public static string GetSex(this Person item) 

    { 

        return item.Sex; 

    } 

}


//调用:

Person person = new Person(); 

person.GetSex();
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我已经怒不可遏了!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值