目录
关于脚本继承“Monobehaviour”后的类构造函数的问题
“$”符号快速链接
描述:
曾经我们链接字符串都是用“”+“” or string,.format(""),自C#6.0开始,“$”符号快速实现字符串链接。
private void TestFormat() { int a = 10; string b = "$符号格式化"; print($"这是a:{a},这是b:{b}"); print(string.Format("这是a:{0},这是b:{1}", a, b)); }
C# Conditional
描述:
方法属性的忽略,这种特性允许我们包括或者取消特定方法的所有调用。为方法声明应用Conditional特性并把编译符作为参数来说使用。
定义方法的CIL代码本身总是会包含在程序集中,只是调用部分的代码会被插入或忽略#define 自定义1 //可以调用TestConditional_1()方法 #define 自定义2 //可以调用TestConditional_2()方法 using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Diagnostics; public class Testing_Conditional : MonoBehaviour { private void OnEnable() { TestConditional_1(); TestConditional_2(); } [Conditional("自定义1")] private void TestConditional_1() { print("TestConditional_1"); } [Conditional("自定义2")] private void TestConditional_2() { print("TestConditional_2"); } }
Unity 非UI上显示上下文菜单
描述:
如果想在Unity这里显示要调用的函数,按照以下操作步骤即可实现。
//具体代码 [ContextMenu("更新显示视频名字")] private void UpdateVideoName() { anchorTriggerContent.videoName = gameObject.name; }
C# Partial局部属性用法
描述:
Partial是局部类型的标志。局部类型可以实现将一个类、结构或接口分成几个部分,分别放在在几个不同的.cs文件中(当然也可以放在同一个.cs文件中)。
在程序进行编译之后,将会合并成一个完整的类。因此局部类型并没有看起来那么难以理解,使用partial只是让类变得更容易管理,实际使用时和普通的类一样。
适用范围:
(1)类型特别大,不适合放在一个文件中实现。
(2) 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。(如设计模式中的“模板方法”。模板方法就是把所有相同功能都写在父类中,需要有变化的方法在父类中写成虚方法,然后在子类中重写虚方法,因此模板方法利用partial实现了代码的利用。)
(3)一个类同时需要多个人编写。
注意事项:
(1)只适用于类、接口、结构,不支持委托和枚举。
(2)同一个类型的各个部分必须有修饰符partial。
(3)使用局部类型时,一个类型的各个部分必须位于相同的命名空间中。
(4)一个类型的各个部分必须同时被编译。
(5)partial只有和class、struct、interface放在一起时才表示局部类型。
(6)一个类型的各部分子类的访问修饰符必须保证一致性。
(7)若其中一个部分类使用了static /abstract/ sealed修饰符,则整个类都是静态类 / 抽象类 / 密封类。(后面会有static /abstract/ sealed的详解)。另外注意不能在一个部分类上使用static,在另一个部分类上使用abstract。
(8)局部类型的累加效应。 a.特性的累加效应。public partial class PartialClass { public void Print1() { print("局部类1"); } } public partial class PartialClass { public void Print2() { print("局部类2"); } } public partial class PartialClass { public void Print3() { print("局部类3"); } } public partial class PartialClass : MonoBehaviour { public void Print() { print("合并一个类"); Print1(); Print2(); Print3(); } }
Unity 脚本中生命周期执行的顺序你真的了解吗?
描述:
场景中脚本生命周期执行的顺序:是按照对象在场景中第一次创建时候的顺序有关,与创建好对象后的排放顺序无关!顺序可打开**.unity场景文件查看或更改!也可以重新设计场景!删除**.unity.meta文件无效!
关于序列化结构体在Unity属性面板上显示方法
描述:
序列化Struct结构在Unity属性面板上显示
[System.Serializable] public struct BubbleTimeType { public Material morning; public Material noon; public Material night; } [SerializeField] private GameObject sphere; [SerializeField] private BubbleTimeType bubbleTimeType; private MeshRenderer meshRenderer;
关于脚本继承“Monobehaviour”后的类构造函数的问题
描述:
当一个脚本继承自Monobehaviour的时候,类中还包含有当前类的构造函数,那么构造函数将会执行两次。