摘要: 卓平台下JAR包变成了压缩包,直接通过File来读取StreamAsset下的文件是不行的 通过UnityWebRequest来读取,以某一个XML文件为例 var path = Path.Combine (Application.streamingAssetsPath, "xxx");// 使用C 阅读全文
posted @ 2021-11-03 22:43 Logarius 阅读(239) 评论(0) 推荐(0)
摘要: 单张纹理 就是用纹理颜色代替漫反射颜色 Shader "Custom/SingleTexture" { Properties { // 声明纹理属性 _MainTex("MainTexture",2D)="white"{} _Specular("Specular",Color)=(1,1,1,1) 阅读全文
posted @ 2021-11-03 22:41 Logarius 阅读(81) 评论(0) 推荐(0)
摘要: 深度测试 根据深度缓冲,比较两个片元距离摄像机的距离,如果当前片元比起深度缓冲中的值来说,离摄像机更远,那么当前片元不会被写入。 透明度测试 如果片元的透明度不满足条件,则被舍去,不进行任何处理。如果满足条件,那就当做不透明物体进行处理。不需要关闭深度写入。 透明度混合 根据当前片元的透明度,与颜色 阅读全文
posted @ 2021-11-03 22:41 Logarius 阅读(94) 评论(0) 推荐(0)
摘要: 环境光 可以认为就是给物体加一层底色,因为即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远处的光),所以物体几乎永远不会是完全黑暗的。为了模拟这个,我们会使用一个环境光照常量,它永远会给物体一些颜色。 在Windows/Lighting/Settings中的AmbientOcclusion中 阅读全文
posted @ 2021-11-03 22:38 Logarius 阅读(190) 评论(0) 推荐(0)
摘要: 线性代数基础 单位向量 向量点积 计算投影 因为是B在A上的投影,所以投影向量必然是沿着A方向的 判断方向 点积结果的正负,依赖于夹角的大小,当夹角大于90度时,Cos结果为负,此时可以判断两个向量朝向不同 向量叉积 两个向量叉积的结果,垂直于这两个向量,此时3个向量可以构成一个三维坐标系 判断左右 阅读全文
posted @ 2021-11-03 22:37 Logarius 阅读(323) 评论(0) 推荐(0)
摘要: 输入装配阶段 三维模型本质是成千上万的顶点数据,比如一个正方形就有8个顶点,输入装配阶段则是对于模型顶点的第一次处理,将顶点装配成图元 该阶段不可编程 顶点着色阶段 顶点着色器会遍历传入的每一个顶点进行着色,注意,虽然叫着色器,但并不是字面意义上“计算颜色”,顶点着色阶段还有很多额外的操作,比如最重 阅读全文
posted @ 2021-11-03 22:37 Logarius 阅读(117) 评论(0) 推荐(0)
摘要: 通过ObjectField就可以轻松实现,问题在于如何获得脚本对象? MonoScript.FromMonoBehaviour可以获得一个MonoScript对象,而MonoScript继承TextAsset继承Object GUI.enabled = false; EditorGUILayout. 阅读全文
posted @ 2021-11-03 22:34 Logarius 阅读(51) 评论(0) 推荐(0)
摘要: EditorUtility.OpenFilePanel (); EditorUtility.OpenFolderPanel (); 阅读全文
posted @ 2021-11-03 22:34 Logarius 阅读(53) 评论(0) 推荐(0)
摘要: if (GUILayout.Button("清空")) { if (EditorUtility.DisplayDialog("警告","确定要...?","Ok","Cancel")) { // Do Something } else { // Do Something } } 阅读全文
posted @ 2021-11-03 22:33 Logarius 阅读(28) 评论(0) 推荐(0)
摘要: 前言 目前网上找到的相关文章都是互相转发抄袭,真的毫无阅读价值,如此简单的通信竟然花了我好几天的功夫学习,故做此记录 Android层 准备 环境配置相关的内容就不介绍了 创建一个空项目 下面配置可以随便写,不会用到,但还是规范一点吧! 创建项目,等待Gradle Sync,切记不要使用代理,不要使 阅读全文
posted @ 2021-11-03 22:32 Logarius 阅读(201) 评论(0) 推荐(0)
摘要: 前言 本文章学习自这里,这是素材文件的下载链接 多半内容都是文章内容加上自身理解,受限于时间以及自身能力水平,谨慎参考 首先需要3个Unity的官方包,请打开Unity的预览包选项,不然很多预览阶段的包你是无法在包管理器中看到的,具体如图 随后在Package Manager中安装Jobs、Burs 阅读全文
posted @ 2021-11-03 22:28 Logarius 阅读(653) 评论(0) 推荐(0)
摘要: 先新建如下脚本 ObjectBase是对象基类,如果某个对象想要被对象池管理,那就必须继承自这个类,实际上真正的对象被封装在这个类内部 IObjectPool是对象池接口,OBjectPool是对象池,和引用池的结构很像 ObjectPoolManager就是核心管理器了 ObjectBase na 阅读全文
posted @ 2021-11-03 22:19 Logarius 阅读(176) 评论(0) 推荐(0)
摘要: 用于管理游戏运行时的各种数据信息,以一种树状结构储存 新建如下两个脚本 其中DataNode是数据节点类,Manager就是管理器了 DataNode 字段与属性 namespace SimpleGameFramework.DataNode { public class DataNode { #re 阅读全文
posted @ 2021-11-03 22:19 Logarius 阅读(176) 评论(0) 推荐(0)
摘要: 所谓流程,本质是对于状态机的再封装。一个游戏在运行是,不可能全程处于一个状态,游戏运行的不同状态,我称其为流程,比如刚打开游戏的时候,可能处在登录页面,或者说黑屏动画的时候在加载资源,这就是游戏运行的两个不同状态,这就是流程。 ProcedureBase 流程基类,本质就是一个状态 /// <sum 阅读全文
posted @ 2021-11-03 22:18 Logarius 阅读(126) 评论(0) 推荐(0)
摘要: 多语言也是很常用的一个功能,如果游戏想要支持多种语言,那就不得不设计一个多语言的框架。比如中文的“确定”,英文要叫“OK”,你不可能创建多个语言版本的UI,那会十分繁琐,难不成有二十种语言,你就创建二十种UI?那也太折磨人了... 目前只考虑到文字的多语言,实际上还有其他资源也需要支持本地化,比如众 阅读全文
posted @ 2021-11-03 22:18 Logarius 阅读(140) 评论(0) 推荐(0)
摘要: 状态机很好理解,它包含了很多的状态,最简单的例子就是Unity自带的Animator Controller,他本身就是一个状态机,里面有很多的动画状态,不同的状态代表不同的动画,然后我们给不同状态之间加上条件,描述状态的转移。 这个模块本身是很好理解的,但目前我也不是很清楚具体会应用在什么地方,参照 阅读全文
posted @ 2021-11-03 22:17 Logarius 阅读(157) 评论(0) 推荐(0)
摘要: 上一节我们写了一个简单的引用池,而单一的引用池是没有啥作用的,事件池就是引用池的作用之一 我们当然可以把事件定义在模块的内部,比如把一个打开UI的事件定义在UI模块内,但是随着我们模块的不断增多,如果所有事件都定义在自己的模块内,在后期是很难维护的,我们都不知道一共定义了哪些事件...因此,一个全局 阅读全文
posted @ 2021-11-03 22:16 Logarius 阅读(379) 评论(0) 推荐(0)
摘要: 从二维开始 假设有这样一张图片,横轴是X轴,纵轴是Y轴 想象一下,假设我们现在是从正面在看这张图,那么如果我们从顶部来看,俯视的看,会是什么样的情况?可能很抽象,尽可能的想象一下,应该是如此,我们看到的应该是图中我画出来的那一条线段。 为什么最开始是一段绿色而不是红色?很明显,因为我们是俯视来看的, 阅读全文
posted @ 2021-11-03 22:15 Logarius 阅读(61) 评论(0) 推荐(0)
摘要: 引用池,和对象池的概念非常像,但是对象池服务于具体的GameObject对象,而引用池服务于普通的C#类。举个例子,如果打开UI的时候你想传递一些数据,最简单的方法就是 class UIData { //... } main() { UIData data = new UIData(); OpenU 阅读全文
posted @ 2021-11-03 22:15 Logarius 阅读(271) 评论(0) 推荐(0)
摘要: 简单绘制一个三角形 上一节末我们已经能够画一条直线了 void line(int x0, int y0, int x1, int y1, TGAImage& image, TGAColor color) { // ... } 在VS里新建一个geometry.h,然后把代码复制进去,这个头文件里就是 阅读全文
posted @ 2021-11-03 22:14 Logarius 阅读(116) 评论(0) 推荐(0)
摘要: 工具类 上一节的末尾,我们需要创建很多UI来测试,因为需要很多Button事件,所以我们写了很多函数,然后...然后一个一个拖到了Button上...很明显的能够感到,这个过程是真的很痛苦...这才五六个Button而已,而实际上我们可能需要几十个几百个Button事件,如果我们都采用这样直接拖放的 阅读全文
posted @ 2021-11-03 22:13 Logarius 阅读(64) 评论(0) 推荐(0)
摘要: 数据结构设计 我们还不能直接开始设计UI的开闭接口,必须先确定好,应该用什么样的一种格式来储存所有的UI脚本,其实很简单 我们能确定一共会有多少个UI吗?这不一定。 我们需要随机访问UI吗?一般没这个需求。 我们可能会频繁创建和删除UI吗?这倒是有可能的。 注意另一个情况,一般来说,我们游戏的UI打 阅读全文
posted @ 2021-11-03 22:12 Logarius 阅读(46) 评论(0) 推荐(0)
摘要: 理论 首先,为什么需要一个UI框架?抛开所有的想法, 假设我们用最最最基础的做法来做一个UI,我们会怎么操作?很简单,作为入门的一个小白,我可能会在场景里拖一个canvas,然后设置他的active为false,并在需要的时候激活canvas,那样就能显示和隐藏 这没有问题,毕竟我的第一个UI界面就 阅读全文
posted @ 2021-11-03 22:11 Logarius 阅读(54) 评论(0) 推荐(0)
摘要: UI的注册 好了,在上一节结尾,我们已经能打开一个UI了,那么我们的管理器完成了吗? 是的,完成了......个锤子! 最直观的问题是,我们现在打开的UI是固定的,废话,因为Resources加载的路径都被写死了...... public void OpenUI() { /// 路径是死的!! Ga 阅读全文
posted @ 2021-11-03 22:11 Logarius 阅读(20) 评论(0) 推荐(0)
摘要: 说在前面! 本系列并非是教程,只是个人学习感想,关于图形学,个人是感兴趣的,但也只是感兴趣而已,并没有像大佬们那样学习的很深 本系列主要学习自这里,链接里的文章写的很好,但是很多知识谈的太粗略,对于懂的大佬自然懂,不懂的萌新看着会比较吃力 本系列不会讲述太细节的图形学基础知识,但能提到尽量都会提,纯 阅读全文
posted @ 2021-11-03 22:10 Logarius 阅读(159) 评论(0) 推荐(0)
摘要: 用离散的思维考虑问题! 在现实世界我们用笔画一条直线,那它看起来就是光滑的、连续的一条直线,但在计算机世界,如果我们在屏幕上也画一条直线...好吧那看起来也很光滑连续...但你要知道其实这是因为屏幕分辨率比较高,如果我们不断放大图片...那就会像这样: 图一:10%缩放 图二:200%缩放 好吧这其 阅读全文
posted @ 2021-11-03 22:10 Logarius 阅读(253) 评论(0) 推荐(0)
摘要: 万事开头难! 想了半天,应该从哪儿开始呢,算了还是别开始了... 哈哈开玩笑的让我们先新建一个Unity项目,并给咱们这个框架取一个响当当的名字:SimpleGameFramework,简称SGF(好吧我承认名字很随便,你随意) 项目结构: SimpleGameFramework 好吧这只是一个毫无 阅读全文
posted @ 2021-11-03 22:07 Logarius 阅读(62) 评论(0) 推荐(0)
摘要: 什么是框架? 在所有事情开始之前,我想问一个问题:框架是什么? 我本科是学JAVA的,搞JAVA的同学都清楚,JAVA系的框架那叫一个成熟那叫一个多,虽然我没啥兴趣学,但好歹也在学校的课程安排下使用过很多,但我从来没想过这个问题,什么叫框架? 单例模式是框架吗?MVC是框架吗?库是框架吗?Syste 阅读全文
posted @ 2021-11-03 22:06 Logarius 阅读(65) 评论(0) 推荐(0)