gamemaker吧 关注:13,582贴子:94,185
  • 3回复贴,共1

GameMakerStudio2 羽毛系统 功能介绍

只看楼主收藏回复

羽化设置基础选项
启用羽毛
Enable Feather
文件解析延迟(毫秒)
Document Parse Delay (ms)
你更改script后,Feather等待检查的时间。
工具提示所显示的struct 字段的最大数量
The maximum number of struct fields that are displayed by tooltips.
把鼠标悬停在一个struct ,工具提示会显示该struct 内的变量,最多可显示此处输入的数量。
紧凑型工具提示
Compact Tooltips. Disables certain tooltip information, such as parameter descriptions.
启用此功能将删除某些在悬停在关键词上时出现的工具提示信息,如函数的参数描述,最终使你的工具提示更小。
当asset 在asset 浏览器中被重命名时,重构对Asset 名称的引用
Refactor references to asset name when asset is renamed in Asset Browser.
启用这个功能将确保当你在asset 浏览器中重命名一个Asset ,你的代码中提到的任何内容也会被编辑,所以这些引用不会中断。
从快速修复中创建时,首选多行JSDoc注释样式
Prefer multiline jsdoc comment style when creating from Quick Fix.
当你通过快速修复菜单为一个函数生成JSDoc注释时,生成的JSDoc将使用单行或多行注释,这取决于这个选项。
启用严格的类型模式
Enable Strict Type mode
当启用这个功能时,Feather会更严格地确保你在代码中使用正确的数据类型。
突出显示
错误颜色 Error Colour
警告颜色 Warning Colour
建议颜色 Suggestion Colour
消息严重性
概述Profile
在下拉框中,你可以在GM*规则的几个预设中进行选择。以下是可用的配置文件。
无None:此配置文件将不显示任何错误信息。
语法错误SyntaxErrors:如果你使用这个配置文件,将显示语法错误,以及无配置文件中显示的内容。
类型错误TypeErrors:除了语法错误SyntaxErrors 配置文件外,该配置文件还显示类型错误。
全部All:这个资料显示了Feather可以分析的所有东西。
多个GM*规则
你可以将一个规则设置为"错误Error"、"警告Warn"或"建议Suggestion",这将影响到违反规则的代码在代码编辑器和Feather信息窗口中向你报告的方式。
忽略lgnore:这将忽略该规则被违反的所有情况。
所有从"GM1000"开始的规则都会检查你的语法是否有致命的错误,
而那些从"GM2000"开始的规则是最佳实践规则,可以帮助你防止游戏中的错误。
命名规则
允许你为assets 、变量和GML 代码的其他各种部分设置命名规则。
必须启用 "消息严重程度 "下的GM2017规则,才能使命名规则生效。默认情况下,它是禁用的。
标识符阻断列表
这是一个以空格分隔的标识符列表,忽略已存在的命名规则。即不按规则执行的例外情况。
例如,假设你有一个规则,使用obj_作为objects 的前缀,但你希望你的objects manager network保持原样,不使用obj_前缀。
在这种情况下,你会把manager network写进 标识符阻断列表Indentifier Blocklist。Feather将忽略这些objects 和任何其他具有相同名称的标识符(变量、枚举、参数等)。
<标识符> 命名规则
你可以为列表中每种类型的标识符设置命名规则,如assets 、宏、枚举、函数参数、变量等。
每个命名规则下拉菜单有以下选项。
前缀Prefix
应该出现在标识符名称之前的文本,可以是obj_,用于objects ,_用于局部变量,等等,取决于你的偏好。
后缀Suffix
应该出现在标识符名称之后的文本。
命名方式Naming Style
选择标识符的命名方式。
不受限制Unconstrained:对这种类型的标识符不强制进行格式化。
大驼峰式命名法UpperCamelCase:MyHealth, ObjGrappleHook, MaxInventoryItemsAllowed,等等。
小驼峰式命名法lowerCamelCase:我的健康,objGrappleHook,允许的最大库存物品等。
全部大写ALL_UPPER:MY_HEALTH, OBJ_GRAPPLE_HOOK, MAX_INVENTORY_ITEMS_ALLOWED等。
全部小写All_lower:My_health, obj_grapple_hook, max_inventory_items_allowed, 等等。
Animation Curve Naming Rule 动画曲线命名规则
Constructor Function Naming Rule 结构函数命名规则
Function Naming Rule 函数命名规则
Sequence Naming Rule 序列命名规则
羽毛的特点
在偏好设置中,将Feather打开enabled,才启用。
鼠标悬停信息
函数
显示其手动描述,并列出所有参数。
sprite
显示其第一帧
Type 类型bitmap 位图
Resolution 分辨率
Image Number
Collision TypeRectangle
Bounding Box 碰撞盒边界框
Origin 原点Top Left
颜色值
CSS十六进制代码、RGB和HSV值
特殊值
资产重构(重命名)
可以在代码中重命名globalvar、static vars、assets、enum或enum成员、实例变量,资源浏览器中的资源名也会更新。
重命名代码中的脚本时,会更新脚本内部的函数名,不会更改资源管理器中的名称。
资源浏览器中
重命名资源浏览器中的脚本时,不会更新脚本内部和代码中的脚本名。
如果在 asset 浏览器中重命名一个Asset ,Feather不会自动更新你项目代码中所有提到它的地方。这可以在Feather设置中启用或禁用。
所以不要在资源浏览器中重命名。
代码中
光标放在asset上,然后按CTRL/CMD + SHIFT + R。弹出重命名对话框,输入一个新的名字并点击"应用"。asset 本身,以及你的项目中对它的所有引用,都将被重新命名。
快速修复
错误或警告
光标放在被报告的行上,然后按CTRL/CMD+Q键,就会出现快速修复菜单。或者,你也可以点击代码行号栏中的 Feather图标。这个菜单会向你显示一个快速修复方法,并允许你禁用该行的规则,或改变其严重程度。
创建函数(不用)
快速修复菜单允许你为该函数自动生成JSDoc注释。还是采用自定义的JSDoc注释。

/// @func 计算数组中,数组0元素的数量
/// @desc d数组0元素不能相同
/// @arg {计算} sz 描述
/// @arg {==} [sz] 描述
/// @Return Array (数组0对应位置数据的数量)
变成
/**
* 计算数组中,数组0元素的数量 d数组0元素不能相同
* @param {any*} sz 描述
* @param {any*} sz 描述
* @returns {array} Array (数组0对应位置数据的数量)
*/

/// @func is_same_object(inst_id, object_id)
/// @desc Check if the given instance belongs to the given object.
/// @arg {Id.Instance} inst_id The unique instance ID value of the instance to check.
/// @arg {Asset.GMObject} object_id The object index to be checked against.
/// @return {Bool}
变成
/// @desc is_same_object(inst_id, object_id) Check if the given instance belongs to the given object.
/// @param {id.instance} inst_id The unique instance ID value of the instance to check.
/// @param {asset.gmobject} object_id The object index to be checked against.
/// @returns {bool} Description
查找所有参考资料(变量所有的引用)
允许你在整个项目中找到对一个变量的所有引用。
光标放在一个变量上,然后点击F3。你会在工作区的顶部看到一个小的搜索栏。按相应的箭头导航到上一个或下一个参考(无效),或按Esc关闭它。
它不是简单地搜索一个文本字符串,而是从其声明的范围中寻找所选变量的引用。所以两个具有相同名称但分别存在于两个不同objects 的变量将不会匹配。但具体相同名称但分辨率存在于两个不同结构的变量却不能区分。
列出所有参考资料
光标放在一个变量上,然后点击SHIFT + F3。这将打开 "搜索结果 "窗口,并在一个列表中显示所选变量的所有引用。搜索完成(6结果),比实际结果少1个。
羽毛数据类型
Feather使用数据类型来提供编写代码时的智能语法检查,确保你不会为一个变量或函数参数使用错误的数据类型。为一个变量指定数据类型(没有例子来说明如何用)
用JSDoc注释,为脚本函数的参数和返回值指定数据类型,@param 注释参数(和用@arg效果一样)和 @return 注释返回值 JSDoc标签允许你指定以下任何一种类型。JSDoc类型不区分大小写。
数据类型要看悬停显示、代码补全、状态栏参数和错误检查的反馈。
不能自定义类型英文,悬停显示无法识别类型。
基本类型具体例子*描述
RealN/AA real number
BoolN/AA boolean
StringN/AA string
ArrayDefault - Array...An array, may include specifiers
Pointer指针Default - Pointer...A pointer, may include specifiers
Function函数Default - Function...A function, may include specifiers
Struct结构Default - Struct...A struct, may include specifiers
Id
.Instance - Instance ID
.DsList - DS List ID
.DsMap - DS Map ID
.DsGrid - DS Grid ID
.DsStack - DS Stack ID
.DsPriority - DS Priority ID
.DsQueue - DS Queue ID
...An ID,需要返回id的函数
Asset资源
.GMAnimCurve 动画曲线- Animation Curve Asset
.GMObject - Object Asset
.GMAudioGroup 音频组- Audio Group ID
.GMFont - Font Asset
.GMPath - Path Asset
.GMScript - Script Asset
.GMShader - Shader Asset
.GMSound - Sound Asset
.GMTimeline - Timeline Asset
.GMRoom - Room Asset
.GMSequence 序列- Sequence Asset
.GMSprite - Sprite Asset
.GMTileSet 瓦片- Tile Set Asset
...An asset, requires specifiers
Constant常量
.Colour - Colour
.HAlign 字符水平对齐- Horizontal Alignment Constant
.VAlign 字符垂直对齐- Vertical Alignment Constant
.Cursor 光标图标- Cursor Constant
.EventType 事件类型- Event Type Constant
.EventNumber 事件编号- Event Number Constant
.PrimitiveType 绘制基元- Primitive Type Constant
...A constant, requires specifiers
AnyN/A任何数据类型
具体例子*列出了一些指定器实例,但不是全部。例如,在Id、Asset和Constant组下可能有更多可能的类型,这里没有列出。
在使用Feather时,你可能会在IDE ,这表明标识符的类型(可能是一个变量、参数、返回值等)目前还不能被Feather分辨出来。当为该标识符添加更多的代码时,它可能会承担一个特定的类型。
具体人员(为变量添加一种数据类型标识)
在基本数据类型后添加一个指定符,使用点.来指定该组中数据的确切类型。
诸如Id.DsList、Asset.GMObject和Constant.Color等类型使用了指定器。
收藏类型(为变量添加多种数据类型标识)
像Array和Id.DsList这样的类型,是包含多个值的数据结构,能够为其所有内容指定一个数据类型集合。使用角括号<>附加到类型上。
例如,一个包含strings 的数组将是Array<String> ,而一个包含数组的DS List,包含Reals,将是Id.DsList<Array<Real>>。
类型验证
下表(略)如果你将某一类型的值(行)传入需要数据类型的参数(列)会发生什么。最好填入需要的类型,不要弄错。
JSDoc 脚本注释
如果自定义的脚本要有脚本名补全、显示参数、注释等,在脚本编辑器中,需添加JSDoc格式的注释。
有函数的描述、函数名,然后列出函数采用的不同参数(参数),确保每一行以三个反斜杠“/”开头,这告诉GameMaker Studio 2将注释解析为JSDoc。注释本身需要有一个标识符(前面有“@”)和内容,可用的标识符如下:
每一行以三重反斜杠“///”开始,空格,“@”
标识符描述
@func完整的函数名称,包括参数
@desc描述
@arg{type} 参数 描述,用 [] 大括号包住一个参数名,表示它是可选的。然后,代码编辑器将期望在最小需要的参数和参数总数之间有任何数量的参数。
@return{type} 返回 描述
没有下面羽毛标识符使用的例子,教授如何使用。
猜想应和上面的标识符一样,用于脚本函数注释中
羽毛标识符描述
@pure将该函数标记为纯函数。纯函数 (Pure Function):返回结果只依赖于它的参数,依赖了常量也不行。并且在执行过程里面没有副作用(没有对外写数据)。
@ignore将函数从Feather的自动完成中隐藏起来
@deprecated将该函数标记为已废弃
@context/@self设置函数的上下文,Feather自动完成使用它来提供上下文信息。可以是一个object ,也可以是一个构造器。脚本上下文(内部作用域)就是调用者,不用标记。方法的内部作用域是创建者,才需要标记。方法可以被悬停识别吗?
例子
function is_same_object(_id, _obj) {
if (_id.object_index == _obj) {
return true;
}
else return false;
}
这个脚本检查一个实例是否与给定对象具有相同的对象索引,并将被简单地调用为:
if is_same_object(id, obj_Player) {//在if的检测中应用脚本
instance_destroy()
}
但是,将其写入脚本编辑器不会显示参数,也不会在使用时为您提供任何帮助,因此我们需要将描述、函数名和参数添加为JSDoc注释,如下所示:
/// @func is_same_object(inst_id, object_id)
/// @desc Check if the given instance belongs to the given object.
/// @arg {Id.Instance} inst_id The unique instance ID value of the instance to check.
/// @arg {Asset.GMObject} object_id The object index to be checked against.
/// @return {Bool}
function is_same_object(_inst_id, _object_id){
return _inst_id.object_index == _object_id;
}
现在,用代码调用这个脚本时,您将获得代码补全和参数的帮助
在上图中,顶部显示自动完成中的函数,底部状态栏显示参数。
用@func标识符时,在IDE中显示的脚本名称将与资源树中的脚本名称相同。因此,您可以在资源树中将脚本命名为一个对象,并用@func将其命名为另一个对象,IDE会将两者识别为同一脚本资源的别名,但只有@function one会自动完成。
@arg的类型“type”和描述“description”默认情况下不会显示在IDE代码中,要查看它们,要激活偏好设置》语言》GML Code,在状态栏中显示参数类型、在状态栏中显示参数描述
由于scripts ,其中可以有多个函数,你可以在其声明之前为每个函数添加JSDoc注释。
整理
/// @func 函数英文名 模块前缀_,不需要添加()和参数,在状态栏和代码提示窗口都有参数提示,这里再写显得函数名很长。有无()和参数只影响羽毛悬停显示的函数名有无()和参数。必须和函数名的标识符一样,状态栏才会有参数提示,如果这样,不要@func也行,把函数中文名写在描述前面。
在方法上面也可用JSDoc注释。增加羽毛悬停信息。必须有/// @func 方法标识符,才会出现状态栏参数提示。有/// @func 方法标识符虽然代码着色改变,但用is_method()判断,依然是方法。内部作用域也是创建者。
/// @desc 简短的调用条件、使用注意事项、R: 内容 (/// @return不显示中文、描述,需在此描述)。在羽毛中显示在函数中文名之后
/// @arg {类型} 中文名 描述(悬停显示底行),偏好设置》语言》GML Code》状态栏显示参数类型{type},不显示描述。在羽毛中显示{类型}、中文名、描述。[中文名]表示可选参数
/// @return {类型} 中文名(悬停不显示) 描述(悬停不显示),羽毛悬停显示的返回值在信息第一行->后的字符,不显示中文名和描述。如果类型不是GMS2的类型英文,会自动识别为一种类型。
/*详细说明
此处不能/**/这样,必须换行,否则悬停无法识别注释
*/
类型必须是GMS2的类型英文,虽然类型英文不区分大小写,但为了和悬停信息一致,开头字母也大写。
偏好设置》默认脚本内容
/// @desc 函数中文名 模块前缀_ 调用条件、使用注意、R:返回中文名 描述
/// @arg {类型英文} 中文名 描述
/// @return {类型英文} 中文名(不显示) 描述(不显示)
/*
*/


IP属地:云南1楼2022-10-08 20:15回复
    回帖总结一下,羽毛总共为我们带来了四大功能。
    悬停信息、代码变量命名、变量引用查找、注释代码查错和修复建议


    IP属地:云南2楼2022-10-09 06:30
    回复
      但是开了羽毛后global变量自动联想就没了,而且两个版本都没修复这个问题只能说yoyo不愧是yoyo


      IP属地:山东来自Android客户端3楼2022-10-13 10:32
      回复
        我用
        globalvar gVar;
        gVar = 100
        全局变量gVar有代码补全啊。


        IP属地:云南5楼2022-10-13 19:37
        回复