C访问器其实就是属性,可以给字段添加get访问器和set访问器来限制它的读写。 将不带 set 访问器的属性视为只读。 将不带 get 访问器的属性视为只写。 将具有以上两个访问器的属性视为读写。 也可以在访问器中自定义逻辑。 比如下面这个例子 publicintMonth{get=>_month;set{if((value>0)&&(value<13)){_month=value;}}} 这个字段就是对set访问器做了逻辑判断,当对字段进行赋值时,就会走set访问器 在声明字段属性的同时...

  v5bEezpf7PPs   2023年11月02日   51   0   0

JKFrame资源、教程 JKFrame官方文档 视频课主要是讲如何去用这个框架,官方文档并不完善,但是聊胜于无,可以作为参考 这也是我写这个系列学习笔记的初衷。 JKFrame组成 从目录构成上,就可以清晰的看出大致的组成部分 JKFrame个人评价 涵盖了比较主要的开发模块,大部分的模块调用还是比较接近于工具类的接口调用,所以比较灵活,也方便上手,学习成本比较低。 目的 此篇博文作为开端,接下来我会记录下自己学习这个框架的过程,梳理这个笔记,方便后期查阅。

  v5bEezpf7PPs   2023年11月02日   59   0   0

Singleton 目录位置 单例模式的基类,不用mono的类可以直接继承 源码 namespaceJKFrame { ///<summary> ///单例模式的基类 ///</summary> publicabstractclassSingleton<T>whereT:Singleton<T>,new() { privatestaticTinstance; publicstaticTInstance { get { if(instancenull) { instance=newT(); } returninstance; } } } }...

  v5bEezpf7PPs   2023年11月02日   57   0   0

前言 为啥要先写对象池的笔记,因为其他模块大部分都要用到,这块看明白了,方便以后理解,这篇文章主要是讲对象池系统的原理和组成,下一篇会介绍对象池的应用。 对象池系统简介 对象池系统主要是为了对象的复用,优化性能,减少垃圾回收的机制的触发,常用于需要频繁创建和销毁的对象。对象池系统实际上是包含了多个队列数据结构的对象池,对象池系统本身是个字典类型。 对象池脚本代码结构 结构的话,我单独做了个xmind的结构图,可以看下 负责外部调用的静态方法全部在PoolSystem脚本内,进行统一管理。包括: 初始化对象池 获取对象 存入对象 清除单个对象池 清除所有的对象池 对象池实现 为了方便使用,所...

  v5bEezpf7PPs   2023年11月02日   69   0   0

前言 书接上回,上一篇文章介绍了对象池系统的构成和内部实现的逻辑,这一篇文章主要记录下对象池系统在JKFrame2.0的框架中该如何使用。 案例 我们做一个发射子弹的例子,来用到对象池系统。 创建子弹 创建子弹的预制体,可以用球来代替 添加子弹脚本 给子弹预制体添加子弹脚本,子弹2秒钟后,自动销毁 usingJKFrame; usingUnityEngine; publicclassBulletController:MonoBehaviour { publicvoidInit() { transform.position=Vector3.zero; Invoke(nameof(Desto...

  v5bEezpf7PPs   2023年11月02日   54   0   0

ScriptableObject是什么 这是官方的描述: ScriptableObject是一个可独立于类实例来保存大量数据的数据容器。ScriptableObjects的一个主要用例是通过避免重复值来减少项目的内存使用量。如果项目有一个预制体附加的MonoBehaviour脚本中存储不变的数据,这将非常有用。每次实例化预制件时,都会产生单独的数据副本。这种情况下可以不使用该方法并且不存储重复数据,而是使用ScriptableObject来存储数据,然后通过所有预制件的引用访问数据。这意味着内存中只有一个数据副本。 个人理解就是用来保存数据的,是保存在项目内的,可以减少内存使用量。 Scrip...

  v5bEezpf7PPs   2023年11月02日   40   0   0

@TOC 问题描述 我们有一台测试机,是红米K30,想安装测试包,怎么都连接不了电脑。手机上也不出现连接手机的选项。 下面是我尝试过的方法:1.打开开发者模式的usb调试2.换各种数据线3.换电脑4.用adb 以上的方法均以失败告终,归其原因还是电脑压根就没有识别到手机这个设备。 解决方案: 在巧合的情况下,试了以下的方法,终于ok了 1.手机关机。2.在关机的情况下插上数据线连接电脑。3.手机开机。4.这样就出现了选择传输方式的选项了。电脑上也显示了手机设备。一切操作就都正常了。 如果拔掉了手机usb线,想再次连接,请重复以上步骤!

  v5bEezpf7PPs   2023年11月02日   47   0   0

C中级编程——C扩展方法,基于Unity 目标: 记录下扩展方法的创建,实现和调用。 内容: 例如我们通过扩展方法,要给Unity的Transform写个reset方法。 创建: 直接上代码 usingUnityEngine; publicstaticclassResetTransform { publicstaticvoidResetTransformAction(thisTransformtrans) { trans.localPosition=Vector3.zero; trans.localRotation=Quaternion.identity; trans.localScale...

  v5bEezpf7PPs   2023年11月02日   92   0   0

@[TOC](数据结构:满二叉树,完全二叉树,非完全二叉树的区别) <hrstyle="border:solid;width:100px;height:1px;"color=000000size=1"> 前言 记录下满二叉树,完全二叉树,非完全二叉树的区别 <hrstyle="border:solid;width:100px;height:1px;"color=000000size=1"> 一、满二叉树 如上图所示,这就是一个满二叉树的示例图,从字面上也很好理解,叶子节点外,所有节点都有两个子节点。 二、完全二叉树 完全二叉树就和名字有点不太一样了,除最后一层节点外...

  v5bEezpf7PPs   2023年11月02日   56   0   0

前言 事件系统主要的作用就是便于消息事件的触发、监听、销毁啥的,解耦合,配合对象池,事件也可以复用。 构成 构成脚本就两部分 EventModule 主要是事件系统系统的内部实现。 1.设定一个总的IEventInfo事件消息的数据类,无参的EventInfo数据类和有参的MultipleParameterEventInfo数据类同时实现了IEventInfo接口,有参的MultipleParameterEventInfo的泛型参数用的是多播委托,所以可以同时支持多个参数的。 2.添加事件的监听的方法AddEventListener,包括无参,一个参数和多个参数的方法。添加成功后也放到字典中...

  v5bEezpf7PPs   2023年11月02日   63   0   0

前言 上一篇记录了框架的事件系统的内部构成和实现,这篇记录下事件系统的使用。 如何使用 新建脚本EventTest usingJKFrame; usingUnityEngine; publicclassEventTest:MonoBehaviour { voidStart() { //添加监听 EventSystem.AddEventListener("inputC",InputKey); } voidUpdate() { if(Input.GetKeyDown(KeyCode.C)) { //触发事件 EventSystem.EventTrigger("inputC"); } } ...

  v5bEezpf7PPs   2023年11月02日   80   0   0

前言 框架的资源管理系统主要是为了统一管理资源的addressable加载和resources资源加载的。 构成 可以看下目录结构 主要就是addressable和resources两部分 什么时候用那种加载,会在项目的设置文件里面进行设置,这个后面记录。先记录下这两种加载的内部实现。 ResSystem_Addressable 普通class对象的相关api GetOrNew:获取实例,有多个重载,都是依赖之前的对象池系统 PushObjectInPool:卸载普通对象,然后放进对象池,也有多个重载 InitObjectPool:初始化对象池,多个重载 游戏物体的相关api GetOrNe...

  v5bEezpf7PPs   2023年11月02日   42   0   0

前言 之前记录了ResSystem资源管理系统的内部构成和实现,这一篇记录下如何使用。 ResSystem使用 Addressable 在框架设置加载模式为Addressable 创建预制体,添加到Addressable的group中, 给预制体挂载脚本BulletController 脚本内容如下,主要是控制子弹飞行,然后一段时间后销毁,之前用过的 usingJKFrame; usingUnityEngine; publicclassBulletController:MonoBehaviour { publicvoidInit() { transform.position=Vect...

  v5bEezpf7PPs   2023年11月02日   49   0   0

前言 主要介绍框架是如何自动生成代码的,自动生成代码主要是为了addressable资源引用的。 结构 添加应用栏目录 在JKMenuItem这个脚本中添加2个按钮,“生成资源引用代码”“清理资源引用代码”,前提是要资源加载方式是addressable下 ifENABLE_ADDRESSABLES [MenuItem("JKFrame/生成资源引用代码")] publicstaticvoidGenerateResReferenceCode() { GenerateResReferenceCodeTool.GenerateResReferenceCode(); } [MenuItem("JKF...

  v5bEezpf7PPs   2023年11月02日   31   0   0

前言 上一篇记录了自动生成资源引用代码的内部实现,主要是针对addressable的资源系统的,为了在加载时不会因为名字写错,加载错,也更加方便的使用addressable加载,这一篇记录下如何使用。 如何使用 之前看过,在编辑器中添加了工具按钮 我们可以在addressable的groups面板上添加几个测试资源 我加了一个预制体的group,加了一个sprite的group,现在可以测试下,这个自动生成资源引用脚本功能,按下上图中的“生成资源引用代码”在project面板生成一个R.cs脚本。 下面看下脚本的内容 usingUnityEngine; usingUnityEngine....

  v5bEezpf7PPs   2023年11月02日   32   0   0

前言 今天在看unity官方的demo的代码,看到了这样的一个特性[ExecuteInEditMode],查了下官方的API(官方API链接),记录下自己的理解。 一、Unity的模式 在介绍[ExecuteInEditMode]之前,先来看下了解下Unity的三种模式 1.EditMode 就是大家通常说的编辑器模式下,不用点击Play运行项目。 2.PlayMode 按下Play正常运行项目的时候,就是PlayMode。 3.PrefabMode 就是在编辑预制体Prefab的时候,就是PrefabMode。 二、[ExecuteInEditMode]及相关特性介绍 1.[ExecuteI...

  v5bEezpf7PPs   2023年11月02日   57   0   0

内部结构 MonoSystem MonoSystem是继承MonoBehaviour的,声明几个action,在MonoBehaviour的声明周期内调用,实现了不继承MonoBehaviour也可以用mono的生命周期。 包括以下几个方法可供外部调用: Init:初始化,获取MonoSystem的实例 AddUpdateListener:添加Update监听 RemoveUpdateListener:移除Update监听 AddLateUpdateListener:添加LateUpdate监听 RemoveLateUpdateListener:移除LateUpdate监听 AddFixedU...

  v5bEezpf7PPs   2023年11月02日   45   0   0

如何使用 上一篇记录了内部结构 这一篇主要记录下如何使用MonoSystem与协程工具 MonoSystem 新建脚本MonoTest.cs 脚本内容如下: usingSystem; usingSystem.Collections; usingSystem.Collections.Generic; usingJKFrame; usingUnityEngine; publicclassMonoTest:MonoBehaviour { privatevoidUpdate() { if(Input.GetKeyDown(KeyCode.A)) { MonoAction.Init(); } if(...

  v5bEezpf7PPs   2023年11月02日   35   0   0

构成 CoroutineTool.cs 有几个公开的静态方法,可供调用: WaitForFixedUpdate() WaitForSeconds(floattime)等待几秒 WaitForSecondsRealtime(floattime)等待几秒,但是不受 timeScale的影响 WaitForFrames(intcount=1) 等待几帧 作用 主要是对协程的等待做了一层封装,较少GC,方便调用。 源码 usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; nam...

  v5bEezpf7PPs   2023年11月02日   44   0   0

@[TOC](JetBrainsRider如何更改前进后退快捷键,并加到工具栏(图文详情)) 效果展示: 更改快捷键 更改快捷键步骤如图所示: 1. 2. 添加到工具栏 2. 这样返回的按钮就添加好了,前进的按钮按照同样的方法可以添加到工具栏。

  v5bEezpf7PPs   2023年11月02日   118   0   0
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~