- 博客(150)
- 收藏
- 关注
转载 lua的字符串匹配,正则表达式
Lua 中的匹配模式直接用常规的字符串来描述。它用于模式匹配函数。你还可以在模式串中使用字符类。字符类指可以匹配一个特定字符集合内任何字符的模式项。比如,字符类匹配任意数字。所以你可以使用模式串 %d%d/%d%d/%d%d%d%d 搜索。
2023-11-21 17:06:44 744
转载 字符串匹配,正则表达式的介绍与使用
又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和(称为“”))操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种,该模式描述在搜索文本时要匹配的一个或多个字符串。
2023-11-21 16:40:24 366
转载 ScriptableObject使用指南
原文链接:https://blog.csdn.net/qq_46044366/article/details/124310241。
2023-10-24 11:34:59 145
转载 自定义特性,PropertyAttribute 与 PropertyDrawer
/ 自定义 Serializable 类可以使用自定义属性绘制器来更改 Inspector 中 Ingredient 类的每个外观。比较不带有和带有自定义属性绘制器的 Inspector 中 Ingredient 属性的外观:不带有(左)和带有(右)自定义属性绘制器的 Inspector 中的类。可以使用属性将属性绘制器附加到 Serializable 类,然后传入属性绘制器所针对的 Serializable 类的类型。// 在给定的矩形内绘制属性。
2023-10-20 15:53:50 210
原创 特性Attribute
本文只提及常用的特性,更多特性请查看官方文档。使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本,而不仅是“Component > Scripts”菜单。使用此属性可以更好地组织 Component 菜单,从而改进添加脚本时的工作流程。
2023-08-04 15:08:38 374
转载 C#不定长参数 params
通过使用关键字params,可以指定可变数量的方法参数。参数类型必须是一维数组。关键字params后不允许有额外的参数,并且一个方法声明只允许使用一个params关键字。如果声明的类型参数参数不是一维数组,编译器错误CS0225发生。
2022-11-15 16:42:01 875 1
原创 字节、流与数据读写
1字节=8位,数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。
2022-10-08 11:41:37 246
原创 lua字符串相关方法,如截取中文字符串
string.sub截取字符串,是按来截取的。截取英文没问题,有中文就会出错,因为一个中文可能是2到5个字节。
2022-09-20 21:27:13 7908
转载 Content Size Fitter与Vertical Layout Group、LayoutElement的结合使用
Content Size Fitter组件主要是用来设置UI的长宽,Horizontal Fit和Vertical Fit分别是控制UI的宽和高,有三个值可选:Unconstrained:组件不根据布局元素调整 ,可手动修改长宽的值。MinSize:根据布局元素的最小值来调整,不能手动修改长宽的值。PreferredSize:根据布局元素的内容来调整,不能手动修改长宽的值。一、最简单的用法,挂在Text上,根据文本内容改变尺寸二、文字后边固定位置加图片:如游戏中聊天(名字+表情).
2022-05-20 21:09:17 1541 1
转载 Lua中and和or的用法和记忆方法
一.and 和 or的语法特性Lua中and 和 or是逻辑运算符,对他们的操作数而言false和nil为false,其他均为trueLua官方手册中and 和 or的解释:The conjunction operator and returns its first argument if this value is false or nil; otherwise, and returns its second argument.如果第一个参数为false的话,and返回第一个参数,否则返回.
2022-05-17 16:33:36 8449
原创 Lua loadstring 执行字符串中的代码
loadstring最典型的用处是去执行外部代码。也就是位于程序之外的代码。loadstring的用法:将传入的代码块编译好之后以函数的形式返回!所以loadstring的返回值是一个function,如果传入的代码块有语法错误则返回nil!一、执行配置表中的代码。1、在配置表中的clickFunc字段填入下面的字符串,也就是一行代码:ModelMgr.instance("ShopModel"):OpenShopUI(1, 3)2、在实际的代码,用下面的方式将字符串转换为函数。即可进行调用,
2022-05-13 16:36:51 1327
原创 游戏开发技巧
model层用dictionary存储所有数据-- 初始化所有卡牌的数据(服务器)function CardModel:InitAllCardData(data) for key, value in pairs(data) do self.dictAllCardData[value.thisId] = value endend-- 获取卡牌数据,通过唯一idfunction CardModel:GetCardDataById(thisId) retur
2022-04-28 15:40:57 1275
原创 unity小技巧
一、text添加删除线方法一、1、text添加组件content size fitter2、添加个image作为删除线,添加为子节点,左右拉伸适配。image纯色即可方法二、用TextMeshPro,TextMeshPro的font style直接就支持删除线...
2022-04-24 17:18:15 2489
转载 Lua 元表(Metatable)
转载自:Lua 元表(Metatable) | 菜鸟教程Lua 元表(Metatable) 在 Lua table 中我们可以访问对应的 key 来得到 value 值,但是却无法对两个 table 进行操作(比如相加)。 因此 Lua 提供了元表(Metatable),允许我们改变 table 的行为,每个行为关联了对应的元方法。 例如,使用元表我们可以定义 Lua 如何计算两个 table 的相加操作 a+b。 当 Lua 试图对两个表进行相加时,先检查两者之一是否有元表,之后检查是否..https:/
2022-03-02 17:55:35 470
转载 Lua 协同程序(coroutine)
转载自:Lua 协同程序(coroutine) | 菜鸟教程Lua 协同程序(coroutine) 什么是协同(coroutine)? Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。 协同是非常强大的功能,但是用起来也很复杂。 线程和协同程序区别 线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。 在任一指定时刻只有一个协同程序在运..https:
2022-03-02 17:16:09 215
转载 Lua 字符串
字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua 语言中字符串可以使用以下三种方式来表示:单引号间的一串字符。 双引号间的一串字符。 [[与]]间的一串字符。以上三种方式的字符串实例如下:string1 = "Lua"print("\"字符串 1 是\"",string1)string2 = 'runoob.com'print("字符串 2 是",string2)string3 = [["Lua 教程"]]print("字符串 3 是",strin...
2022-03-02 17:01:35 5014
原创 lua-复制一份table,修改新的table,不改变原来的table
local table1 = {{1,2,3}, {4,5,6}} local table2 = {} for key, value in pairs(table1) do table2[key] = value end table2[1] = 2 print("table1 =", PrintTable(table1)) print("table2 =", PrintTable(table2))
2022-02-13 20:38:05 1722
转载 lua-table引用传递和值传递
function test1(tt) tt = {1, 3, 5}endfunction test2(tt) tt[1] = 2 tt["a"] = "hello"endt = {4, 5, 6}test1(t)for k,v in pairs(t) do print(v)endprint("------")t = {4, 5, 6}test2(t)for k,v in pairs(t) do pri...
2022-01-27 12:06:41 1094
转载 电脑录屏的简单方法
下载专门的录屏软件这点就不用说了,下面说说简单的录屏录屏方法一:步骤记录器(纪录步骤,图片形式)步骤记录器的全称叫做“问题步骤记录器”,它并不是一个专门的电脑录屏软件,起初它的作用是为了方便大家详细的描述电脑问题,记录问题发生的过程,方便我们找到问题的解决方法。久而久之,步骤记录器被越来越多的人用作电脑录屏这个方面。使用快捷键win+r将电脑的运行窗口给调换出来,再在输入框中输入psr.exe,就可以将步骤记录器调换出来了。录屏方法二:PPT屏幕录制PPT也是有录制视频的功能,我们打开P
2022-01-15 12:23:25 2267
原创 lua杂记
用传入索引拼接的key值,从table中获取对应的valuereturn self.cardBaseCfg["attr"..index]传入的index不同,可以获取不同的配置表属性。
2022-01-13 11:29:15 169
转载 Unity的程序集Assembly 与 加快代码编译速度
学习大纲 一. 什么是程序集?二. 为什么使用程序集?三. 如何在Unity中使用程序集1.基本常识2.自定义程序集3. 多层级的程序集4. Assembly Definition Reference 四. 程序集 Inspector 面板详解 一. 什么是程序集? 程序集是代码进行编译是的一个逻辑单...
2021-12-06 15:21:08 2852
转载 程序集与反射技术(C#)
首先我们来看程序集,程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件.exe和类库文件.dll)。由于程序集在编译后并不一定会生成单个文件,而可能会生成多个物理文件,甚至可能会生成分布在不同位置的多个物理文件,所以程序集是一个逻辑单元,而不是一个物理单元。即程序集在逻辑上是一个编译单元,但在物理储存上可以有多种存在形式。对于静态程序集可以生成单个或多个文件,而动态程序集是存在于内存中的。在C#中程序集处处可见,因为任何基于.NET的代码在编译时都至少存在一个
2021-12-06 14:38:30 219
转载 将UI的点击事件渗透下去
处理UI还有3D模型的点击推荐使用UGUI的这套事件系统,因为使用起来比较简洁,不需要自己用代码来发送射线,并且可以很好的处理同时点击UI和3D模型上。1.给3D摄像机挂一个Physics Raycaster组件。Event Mask过滤掉UI.2.用unity自带的Event Trigger 或者 http://www.xuanyusong.com/archives/3325就可以对UI 或者 3D模型进行点击事件的监听了3.OK 当UI与模型相互叠加的时候,优先响应UI,并且响应最前面...
2021-12-03 15:01:19 264
转载 脚本批量打包渠道包研究
近在研究Unity3D脚本批量打包,比如在Android平台下各种不同分辨率和不同内存大小的机器,可能还有不同的渠道包,不同渠道可能用的SDK都不一样,这一切的一切都表明你的代码无法做到自适应的,除非批量打包提供各个平台的预定义标签#define 。Unity默认提供了一些预定义标签如:UNITY_EDITOR : 编辑器模式下。UNITY_STANDALONE:PC Mac Linux模型下。UNITY_IPHONE:IOS模式下。UNITY_ANDROID:ANDROID模式下。.
2021-12-02 10:47:03 249
转载 Unity3D中所有特殊的文件夹
这里列举出手游开发中用到了所有特殊文件夹。1.EditorEditor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以。比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论多少个叫Editor的文件夹都可以。Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用。一般呢会把一些工具类的脚本放在这里,或者是一些编辑时用的DLL。 比如我们现在要做类似技能编辑器,那么编辑器的代码放在这里是再好不过了,因为...
2021-11-26 10:59:17 705
转载 脚本自动选择Hierarchy或Project下的对象
今天有个朋友问我怎么样自动显示某个对象的Inspector面板? Unity是当鼠标在Hierarchy或者Project视图中选择一个或者多个Object,然后在右侧Inspector面板上就会显示所有属性。那么其实解决这个问题的方法就是使用脚本去选择一个Object就行。代码如下 [MenuItem("GameObject/AutoSelect",false,11)] static void Start () { GameObject go = GameObject.Fin
2021-11-25 11:41:15 363
转载 (二十七)[System.Serializable]数组List对象添加默认值
[System.Serializable]对象放在数组中,默认在Inspector面板上Array的数量是0,如果在这里修改数量,新加的元素在Inspector面板上它是没有默认值的。比如:我有一个很轻量级的控件,代码中需要序列化List数据,没必要在写个类OnInspectorGUI中自定义绘制它。使用者会在Inspector面板中决定序列化的数量,可是使用者并不知道要填写什么样的值进去, 如果int都是默认值是0 bool默认值是false 可能下面就会有问题。再具体举个例子,比如我需要序列化一
2021-11-25 10:29:03 898
转载 (二十四)不影响原有布局拓展Inspector——如RectTransform
今天无意间发现了一篇好文章,也让我解决了一个很久都没解决的难题。问题是这样的,假如我想去拓展Unity自带的inspector但是并不想影响原有布局。 比如下面这段代码: [CustomEditor(typeof(RectTransform))]public class MyTest : Editor { public override void OnInspectorGUI () { base.OnInspectorGUI (); if(GUILayout.Button("Addi
2021-11-25 10:25:34 278
转载 (二十三)脚本设置ToolBar
Unity版本5.3.2如下图所示,ToolBar就是Unity顶部的那一横条。这里的所有按钮一般情况下都得我们手动的用鼠标去点击。这篇文章我们说说如果自动操作它们1.自动点击左边四个按钮 (拖动、坐标、旋转、缩放、矩形) [MenuItem("ToolBar/Tools")] static void ToolsMethod() { if(Tools.current == Tool.View) Tools.current = Tool.Move; else if(.
2021-11-25 10:21:01 198
转载 (二十一)Editor的GUI的事件拦截
OnGUI是Unity上一个时代的UI系统,而现在运行时的UI系统已经被UGUI取代,但是Editor的UI还是在用老的这一套GUI系统。比如unity编辑器里的所有窗口,布局,按钮,拖动条、滚动等等都是用GUI来写的。GUI提供了一套Event事件系统,虽然不能模拟它的事件(其实是可以发的EditorWindow.SendEvent),但是确可以进行拦截。比如说:1.限制Hierarchy视图的树状结构。(让某些对象不可随意移动层次结构)2.限制Project里的资源不能任意拖动(限制美术..
2021-11-25 10:14:40 287
转载 (十六)创建Lua脚本模板
Unity里能创建 c#脚本模板,但是如果我想创建Lua脚本模板怎么办呢?拓展一下编辑器吧。设置一下Lua脚本的模板地址 : Assets/Editor/Lua/Template/lua.lua using UnityEngine;using UnityEditor;using System;using System.IO;using System.Text;using UnityEditor.ProjectWindowCallback;using System.Text.Regu.
2021-11-25 10:11:13 796
转载 (十四)脚本生成Preset Libraries
Preset Libraries它干的事就是把若干个颜色值保存起来。我们都知道颜色值用rgba来保存的。这样拷贝起来就很麻烦了,如果说我把每个界面的颜色都做成模板,需要设置颜色的时候在模板里选择多好?unity提供了Preset Libraries 就可以达到这个需求。http://docs.unity3d.com/Manual/PresetLibraries.html。但是问题来了,这东西不能通过脚本来自动化完成,总不能手动的一个一个设置吧。。。我想做的就是用脚本来创建Preset Librarie.
2021-11-25 10:08:00 158
转载 (九)独立Inspector属性——如限制属性值范围
Unity提供了强大的Editor功能, 我们可以很轻易的在EditorGUI中绘制任意的属性。比如我之前写的文章http://www.xuanyusong.com/archives/2202那么问题就来了,如果我有多属性想共用同一段自定义控件,那么这种方法我就需要在多份代码里绘制控件了OnInspectorGUI 这一节中我们需要用到两个全新的自定义属性PropertyAttribute和PropertyDrawer。 可以理解为一个是数据,一个是渲染。数据代码: using Unit..
2021-11-24 14:36:25 734
转载 (六)自动计算所有子对象包围盒
如下图所示,拖入不同的mesh在一个节点下面,自动生成一个BoxCollider包围盒。这个功能可以方便关卡策划,不然手动设置BoxCollider太蛋疼了。。先选择一个父节点,然后执行下面脚本。。 或者也可以根据需求在关卡编辑器上做成自动的。。 [MenuItem ("MyMenu/Do Test")] static void Test () { Transform parent = Selection.activeGameObject.transform; Vecto.
2021-11-24 14:33:39 500
转载 (五)拓展系统自带组件的Inspector视图
今天无意间听同事说的一个新方法,可以拓展系统自带组件的Inspector。我试了一下果然有效算是学习了, 在博客里面记录一下,方便以后查阅。 using UnityEngine;using System.Collections;using UnityEditor; public class CameraExtension : Editor { public override void OnInspectorGUI(){ base.DrawDefaultInspector();
2021-11-24 14:31:12 191
转载 (三)拓展Scene视图
Scene视图是编辑游戏模型的地方,其实它还可以进行编辑。如下图所示,我给Scene视图做了简单的编辑。Scene视图的拓展是基于对象的,意思就是你必须在Hierarchy视图中选择一个对象才行。Hierarchy视图中选择不同的对象可以有不同的Scene视图。图中我们创建了一个立方体对象,接着给它绑定一个脚本。Test.cs 是个空空的脚本。 using UnityEngine;using System.Collections; public class Test : M..
2021-11-24 14:27:21 154
转载 (二)拓展自定义编辑器窗口
Unity支持自行创建窗口,也支持自定义窗口布局。在Project视图中创建一个Editor文件夹,在文件夹中在创建一条脚本。自定义窗口需要让脚本继承EditorWindow在设置MenuItem,此时在Unity导航菜单栏中GameObjec->window就可创建一个自定义窗口。 using UnityEngine;using UnityEditor;public class MyEditor : EditorWindow { [MenuItem ("GameObje
2021-11-24 14:22:20 290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人