unity及c#学记笔记

Posted 我已经怒不可遏了!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity及c#学记笔记相关的知识,希望对你有一定的参考价值。

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();

以上是关于unity及c#学记笔记的主要内容,如果未能解决你的问题,请参考以下文章

UnityUnity学习笔记目录整理

基于Unity的C#中各类函数使用方法及示例

C#学习笔记——需要注意的基础知识

Unity Shader入门精要学习笔记 - 第5章 开始 Unity Shader 学习之旅

Unity HTFramework框架(四十)Debug的性能监控

unity shader学习笔记 shader基础结构以及Properties面板