UnityEditor开发中Singleton的设计
在Editor下创建单例灵感来自Unity的MonKey插件
使用场景我有一些由ScriptableObject、json或者别的格式组织的一组数据, 我希望在Editor模式下开发一套工具, 能让我对这一组数据进行增删改查, 根据MVC架构的思想, 必须有一个Manager来维护这一组数据的增删改查, 并且该Manager的生命周期需要和Unity Editor的生命周期保持一致.
关键角色
InitializeOnLoad属性, 根据官方的描述, 该属性会在UnityEditor打开和代码重新编译的时候初始化Editor脚本. 你需要给这个Editor脚本提供一个静态的构造函数, 注意 官方提到了 应该避免在InitialzeOnLoad中进行资产加载的操作, 因为InitialzeOnLoad是在资产导入完成前被调用的, 该操作有可能会导致资产加载失败. 要在需要进行资产操作的域重载后进行初始化, 可以使用AssetPostprocessor.OnPostprocessAllAssets回调. 但Unity2020版本中是没有这个接口的, 该回调支持所有资产操作, 并有一个参数提 ...
UnityUGUIText实现描边
通过顶点方式实现描边UGUI中自带的Outline通过Shader方式实现描边
UnityUGUI解构
引子——UGUI中的Text如何被绘制到屏幕上?参与绘制Text的角色:
VertexHelper
TextGenerator
Font和FontData
BaseMeshEffect
这是字体使用的ShaderShader123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)Shader "GUI/Text Shader" { Properties { _MainTex ("Font Texture", 2D) = "white" {} _Color (&quo ...
线性代数在游戏开发中的应用
判断一个向量与坐标轴的重合度向量与每个坐标轴向量进行点积, 注意这里要求参与运算的所有向量都是归一化的, 点积结果会得到一个常数, 对这个常数取绝对值, 结果越大代表与该周向量越重合, 常数的正负代表的是与坐标轴的正方向还是负方向重合度更高.
CSharp中的CancellationToken
参考资料A Deep Dive into C#’s CancellationToken
SVN——SubVersion学习记录
SVN中的两种冲突
1. 文件冲突(file conflict)是什么?
文件冲突指的是: 多人对同一个文件的同一个部分进行了不同修改。
例如:你和同事同时编辑 a.txt 的第5行内容,提交更新时就会发生文件冲突。
常见表现
SVN 会把有冲突的部分插入一些 <<<<<<<、=======、>>>>>>> 标记,等你手动合并/选择。
你需要打开文件合并或直接重新编辑。
2. 树冲突(tree conflict)是什么?
树冲突是 SVN 1.6 及以后的概念。
所谓“树”其实指目录结构/文件结构(不是树状控件,也不是数据结构的树,而是整个项目的文件、文件夹组成的目录树)。
树冲突出现在: 针对目录结构操作(如文件/文件夹的新增、重命名、删除、移动)时,不同人对同一部分目录树做了结构性变化,并发生了冲突。
典型例子
你删除了某个文件/文件夹,同事修改了这个文件
你删了A/B/C.cs,同事还在同一版本上编辑C.cs,你们都提交,然后更新。你就会遇到tree conflict。
一方移动/ ...
程序员超强大脑
剖析程序设计之惑阅读代码中遇到的三种困惑
缺乏知识, 不了解正在阅读的编程语言、算法或领域.
缺乏信息, 无法获得理解代码所需的全部信息, 尤其是如今的代码经常使用各种库、模块或包, 想读懂代码就需要检索大量信息, 而在收集新信息的同时还不能忘记原本应该完成的任务. 代码中看到一个接口不清楚他的作用是属于缺乏信息
缺乏加工能力, 代码有时过于复杂, 超出了大脑的加工能力.
影响程序设计的不同认知过程
长时记忆(long-term memory), 可以无限期存储所有记忆, 缺乏知识意味着长时记忆中缺少足够的相关事实. 长时记忆会存储几类相关的编程信息, 例如成功运用某种编程技巧的记忆、Java关键字的含义、英语单词的含义或者Java中int型变量的最大值(2147483647).
短时记忆(short-term memory), 大脑获取的信息暂时存储于短时记忆, 大脑接受外部的信息时, 不会直接进入长时记忆, 而是首先进入容量有限的短时记忆. 短时记忆的容量众说纷纭, 但是大多数科学家认为这种记忆只能存储少量的信息元素, 通常不会超过12个. 例如, 在阅读程序时, 大脑会把程序使 ...
CSharp中的委托
委托一篇很好的博客https://www.cnblogs.com/skysoot/archive/2012/04/05/2433639.html
C#中的委托类似于C或C++中的函数指针。委托是存有对某个方法的引用的一种引用类型变量,引用可在运行时被改变。
委托特别用于实现事件和回调方法。所有的委托都派生自System.Delegate类。
从实际问题出发来理解委托将方法作为方法的参数这个标题非常地拗口,但我们先不管它,来看两个方法:
123456public void GreetPeople(string name){ EnglishGreeting(name);}public void EnglishGreeting(string name){ Console.WriteLine("Good Moring," + name);}
先不管这两个方法有没有实际的意义,我们现在想通过这两个方法来向某人问好,当传入某人的姓名时,比如说”Joe”进去的时候,在这个方法中将调用EnglishGreeting方法,再次传递name参数 ...