[TOC]
* * * * *
## 精靈編輯器(Sprite Editor)

精靈編輯器是用于配置你所創建的精靈資源屬性的地方,你可以在新建精靈時打開本窗口(在精靈資源文件夾上點擊鼠標右鍵然后選擇“創建(Create)”即可),在已經創建好的的精靈上雙擊鼠標左鍵或單擊鼠標右鍵選擇“屬性”也能看到這個界面。整個界面構成如下:
### 精靈名稱(Sprite Name)
你可以在此給精靈命名,這個名字是你在整個游戲工程中調用這個精靈的唯一標識,名稱中只能包含**字母及數字**以及下劃線符號 **“_”**,同時需要注意的是盡管名稱里允許使用數字,但絕不能以數字開頭,這可能會導致在撰寫GML或DnD腳本時精靈失效。
### 圖像(Image)
在這個區域你可以點擊按鍵以進入設置圖像尺寸的界面,如下圖所示:

在這個界面你可以看到修改前后的預覽圖像,下方還有兩塊用于設置圖像屬性的區域:
* **縮放圖片**:在這里你可以你可以調整精靈畫布以及所有繪制在畫布之上的內容尺寸。你可以選擇鎖定長寬比來進行縮放,也可以設置以像素或百分比為單位進行調整。你還可以根據你的圖像類型來選擇是否開啟線性過度來對圖片縮放進行調整(通常開啟線性過度會使得像素邊緣更加“平滑”,因此在一些像素風格的游戲中最好關閉此選項)。
* **縮放畫布**:這個選項僅僅調整畫布的大小,而不會對上面的繪圖內容造成任何變化。你可以通過選擇方向箭頭來設定不同的“錨點”并設置尺寸。在下方還有鎖定長寬比進行縮放的選項,底部則是設定以像素或百分比為單位進行調整的選項。
當你設定好你所需要的尺寸后,你可以點擊“接受(Apply)”來確認本次修改操作并關閉當前窗口。
> 注意:本操作僅對位圖精靈有效,而對于“矢量圖(SWF)”格式及“骨骼動畫(Skeleton animation )”精靈是灰色無效狀態的
在這里你還能直接打開圖像編輯器來直接繪制你的精靈,或者你可以點擊”導入(Import)“按鈕來導入現成的圖片來創建精靈。常見的位圖格式都可以使用(PNG、JPG、GIF等等),同時Gamemaker Studio 2還支持矢量圖精靈(SWF)以及骨骼動畫(Spine)。想了解更多信息可以查閱導入非位圖精靈的內容。注意當導入位圖精靈時你可以一次選擇多個圖片文件,每一個突破文件都會作為子項被添加到同一個精靈之中即一圖一幀。
### 紋理設定(Texture Settings)
這個功能用于管理和使用GameMaker Studio 2中”紋理頁“中存儲的圖像資源,這個功能通常對于桌面平臺并不十分重要,但是如果你打算開發手機或網頁游戲項目時就顯得十分有必要,因為一旦不能正確使用紋理特性可能會對游戲造成不良影響,甚至影響游戲性能。
**“瓷片:橫向(Tile:Horizontal)”** 和 **“瓷片:縱向(Tile:Vertical)”** 這兩個復選框通常是默認關閉的,因為大多數時候你是用不著瓷片精靈的。但是,在某些特定的情況下,你可以考慮把精靈變成瓷片類型,這種時候你就要把這兩個選項勾上,尤其是在某些時候你打算縮放場景尺寸,但是紋理貼圖無法正確顯示的時候。
如果你的精靈將被用來作為紋理貼圖時,你應該把”分離紋理頁(Separate Texture Page)“選項也勾上,這樣(注意,每個子圖像也都將擁有自己的紋理頁面,所以如果你的精靈有10幀畫面,你最后會生成10個紋理頁面)。這會大大增加你的游戲對內存的消耗,因此無比謹慎使用這個功能。另外還要注意,如果你用這個功能來實現3D功能,紋理數量應當是2的冥數級(如128*128,256*256,512*515等)。
最后,你也可以選擇紋理組來管理你的紋理資源。基本上,一個紋理組(首先要在紋理組管理器中定義)可以用來統一管理和存儲你某個特定游戲場景或關卡中所需的相關圖像資源。比如,你可以把第一關所有的圖像放進一個紋理組,然后把第二關所有的圖像放進另一個紋理組,以此類推……而GameMaker Studio 2會把這些分過組的資源都放在同一個紋理頁上,這樣可以減少游戲在目標平臺上運行時對紋理頁進行緩存的需求。
> 提示:這種做法并非總是必須的,這個方法對于性能的提升取決于目標設備的CPU及GPU的性能限制。
### 碰撞蒙版(Collison Mask)
所有的精靈都有一個”碰撞蒙版(Collision Mask)“來指示這個精靈的可碰撞區域范圍,這個區域在生成實例后將被用來檢測碰撞事件。
首先你可以了解一下自帶的幾種碰撞蒙版**模式**
* **自動模式**:GameMaker Studio 2會自動以精靈透明度為基準來計算碰撞蒙版(取決于下面將提到的“公差(Tolerance)”設置)。
* **全圖模式**:這個模式會自動計算精靈圖片的上下左右邊界,然后設置對應的碰撞蒙版
* **手動模式**:選擇這個模式后,你可以手動設置碰撞蒙版的上下左右的邊界值。
除了上述的三種模式以外,你還可以從下拉選項菜單中指定不同的蒙版類型
* **矩形蒙版**:一個簡單的矩形碰撞蒙版,效率最高速度最快。
* **圓形蒙版**:創建一個圓形蒙版,計算量稍大會慢一些。
* **菱形蒙版**:創建一個菱形的碰撞蒙版,計算量更大,對CPU的消耗也更多。
* **精確蒙版**:這種類型會嚴格貼合精靈圖像的邊框生成碰撞蒙版,如果精靈有多幀不同形狀的圖像,碰撞蒙版會沿著復合邊界生成確保覆蓋每一幀畫面。這種生成方式非常慢并且會消耗大量的CPU資源。
* **幀蒙版**:這種蒙版會針對每一幀不同的圖像單獨計算邊界并且精確匹配生成蒙版,這是目前最慢的蒙版方案,除非萬不得已應當盡量避免使用這種機制。
下面這幾張圖能大致說明這幾種不同蒙版類型的樣子

碰撞檢測是游戲中非常重要的一個環節,常被直接用于處理游戲中不同對象的相互作用和聯系,如果處理不得當可能會影響整個游戲表現。為何如此?設想一下,當兩個帶有碰撞蒙版的實例相遇時,一旦出現相互疊加的蒙版區域時就會觸發碰撞事件,而每個實例的蒙版類型各不相同,可能精確,也可能基于圖形本身,下面是不同的蒙版相遇碰撞的幾個簡單示例:

在下方有一個控制xxx的滑動條,這個可以根據精靈像素的透明度用來調節蒙版的邊界容差——這個值越高則會將越多較透明的像素放置到蒙版之外,這些在蒙版之外的像素將不會用于檢測碰撞事件,值越低則相反。這個設置同樣會作用于包裹體(沒有設置為手動模式時)以及精確蒙版模式。
最后你可以針對蒙版設置 **包裹體(Bounding Box)** 的尺寸。包裹體即恰好能容納精靈蒙版的矩形區域。只有在包裹體內的像素會被用來處理碰撞蒙版以及處理碰撞事件的檢測,這個值默認是自動計算的。如果你開啟了精確蒙版模式,這個包裹體也會針對每一幀圖像單獨進行計算。如果你打算自己設置包裹體的尺寸,你可以直接在上下左右的數值框中輸入對應的數字,或直接在精靈視圖上按住鼠標左鍵拖放來直接“畫”出包裹體的范圍。要注意當你在“畫”包裹體時,蒙版將根據最終的值自動生成。
值得注意的是當你查看預覽窗口時,你可以通過拖拽蒙版四個角的位置來調節蒙版尺寸,效果與輸入包裹體的數值相同。
### 原點/縮放(Origin/Zoom)
在預覽窗口上方有一條屬性欄目,該處包含了精靈的原點屬性設置以及縮放控制。在這里你可以看到精靈的長寬屬性,以及一個”原點“的設置項。這個點代表了它在游戲場景中所處的位置,當你在場景中設定在某個指定的X/Y坐標生成這個精靈的實例時,這個原點將嚴格對應該坐標。默認的原點位置位于精靈的左上角,但大多數情況下你會考慮把精靈的中央位置或其它位置設置成原點,這樣更方便操作,只要用鼠標左鍵單擊原點的下拉選項菜單,然后選擇不同的預設值即可進行修改。你也可以在精靈的預覽圖像上任意位置點擊鼠標左鍵來自定義原點的位置,或在X/Y坐標的輸入框中輸入你想要的位置坐標。
值得注意的一點是,你甚至可以把原點設置在精靈的顯示范圍之外,你可以在坐標中輸入負數或大于精靈尺寸的正整數,這種方式在處理某些特殊的精靈時會很有效。
在右上方的縮放操作則可以縮放預覽圖像的顯示尺寸,中間的圖標可以將預覽圖直接縮放至1:1的尺寸進行展示。
### 預覽(Preview)
預覽窗口可以查看這個精靈在游戲中將會呈現的樣子,你可以使用鼠標滾輪來進行縮放查看,也可以按住滾輪中鍵或同時按住”空格鍵“和鼠標左鍵來拖放預覽區域。你可以通過下文的”幀控制“中的方法來改變預覽圖的顯示。
### 幀(Frame)
這個區域。你可以在任何一幀上按住鼠標左鍵并向左或向右進行拖拽來改變幀序列的順序,同時你也可以在任何一幀畫面上雙擊鼠標左鍵來啟動圖像編輯器來進行編輯修改操作。選中的幀畫面的右上角有一個”x“圖標,點擊可以刪除該幀。你也可以按住Ctrl鍵然后用鼠標復選多個幀,此時點擊刪除圖標會把所有選中的幀都刪掉。
### 幀控制(Frame Controls)
幀控制區域主要用來控制和回放預覽窗口中的幀動畫,點擊”播放“按鈕可以控制動畫的播放以及暫停,點擊循環按鈕可以切換精靈動畫的不同播放模式。
**循環模式**:當動畫播放到最后一幀后從第一幀開始重新播放如此循環
**乒乓模式**:當動畫播放到最后一幀后反向播放至第一幀如此循環播放
同時你還可以在輸入框中設置動畫播放的速度,幀動畫的速度可以基于”每秒播放的幀數“或”每一幀游戲播放的動畫幀數“兩種單位進行設置,在右側還會顯示當前播放的是哪一幀畫面的序號,你也可以按住Ctrl再用鼠標左鍵同時選擇多個幀來進行操作。
- 介紹
- 新手須知
- 版本授權
- 安裝
- 更新
- 發布日志
- 所需SDK
- 賬號
- 首選項設置
- 拖拽編程
- 擴展編輯器設置
- 基本項設置
- 圖片編輯器設置
- 語言設置
- 市場設置
- 對象編輯器設置
- 插件設置
- 資源樹設置
- 場景編輯器設置
- 運行庫設置
- 樣條編輯器設置
- 精靈編輯器設置
- 文本編輯器設置
- 瓷片編輯器設置
- 時間軸設置
- 輸入
- 快速上手
- 概覽
- 啟動頁
- 工作區
- 資源樹
- 工作流
- 創建精靈
- 創建瓷片集
- 創建音頻
- 創建對象
- 創建場景
- 編譯
- 調試
- 快捷鍵
- 菜單
- 文件菜單
- 編輯菜單
- 構建菜單
- 窗口菜單
- 工具菜單
- 市場菜單
- 幫助菜單
- 布局菜單
- 附加信息
- 位運算符和二進制
- 命令行
- 出錯信息
- 文件系統
- 導入非位圖精靈
- JSDoc使用
- 微型WEB服務端
- 過時函數
- 紋理頁
- 使用緩沖區
- 編輯器
- 擴展編輯器
- 字體編輯器
- 圖像編輯器
- 內含文件編輯器
- 備注編輯器
- 對象編輯器
- 路徑編輯器
- 場景編輯器
- 腳本編輯器
- 著色器編輯器
- 音頻編輯器
- 精靈編輯器
- 瓷片集編輯器
- 時間軸編輯器
- 對象可用事件
- 異步事件
- 繪制事件
- 手勢事件
- 其它
- 調試管理器
- 設備管理器
- YoYo資源市場
- 輸出停靠欄
- 項目圖生成器
- 最近使用窗口
- 遠程工作
- 混音器
- 版本控制
- 設置項
- 音頻組
- 配置項
- 跨平臺配置
- 紋理組
- 游戲配置選項
- AmazonFire 配置
- Android配置
- HTML5配置
- iOS配置
- Linux配置
- Mac配置
- Windows配置
- WindowsUWP配置
- 腳本編程
- 拖放編程概覽
- 拖放編程功能索引
- GML概覽
- 代碼
- 數組
- array_create
- array_copy
- array_equals
- array_length_1d
- array_height_2d
- array_length_2d
- 賦值
- 表達式
- 數據存取
- 功能性語法
- 函數
- 腳本
- 注釋
- 關鍵詞
- 變量及作用域
- variable_global_exists
- variable_global_get
- variable_global_set
- variable_instance_exists
- variable_instance_get
- variable_instance_get_names
- variable_instance_set
- 尋址變量
- 評估順序
- 數據類型
- is_array
- is_bool
- is_int32
- is_int64
- is_matrix
- is_ptr
- is_real
- is_string
- is_undefined
- is_vec3
- is_vec4
- 變元計數
- 指針
- 內置變量屬性
- async_load
- health
- lives
- score
- GML函數索引
- asset_get_index
- asset_get_type
- Compatibility_Functions
- Asynchronous Functions
- Audio
- Buffers
- Cameras And Display (攝像機和顯示)
- Cameras(攝像機)
- camera_apply
- camera_create
- camera_create_view
- camera_destroy
- camera_get_active
- camera_get_begin_script
- camera_get_default
- camera_get_end_script
- camera_get_proj_mat
- camera_get_update_script
- camera_get_view_angle
- camera_get_view_border_x
- camera_get_view_border_y
- camera_get_view_height
- camera_get_view_mat
- camera_get_view_speed_x
- camera_get_view_speed_y
- camera_get_view_target
- camera_get_view_width
- camera_get_view_x
- camera_get_view_y
- camera_set_begin_script
- camera_set_default
- camera_set_end_script
- camera_set_proj_mat
- camera_set_update_script
- camera_set_view_angle
- camera_set_view_border
- camera_set_view_mat
- camera_set_view_pos
- camera_set_view_size
- camera_set_view_speed
- camera_set_view_target
- view_camera
- view_current
- view_enabled
- view_get_camera
- view_get_hport
- view_get_surface_id
- view_get_visible
- view_get_wport
- view_get_xport
- view_get_yport
- view_hport
- view_set_camera
- view_set_hport
- view_set_surface_id
- view_set_visible
- view_set_wport
- view_set_xport
- view_set_yport
- view_surface_id
- view_visible
- view_wport
- view_xport
- view_yport
- The Screen Display
- Controls
- Data_Structures(數據結構)
- ds_exists
- ds_set_precision
- DS Grids
- DS Lists(列表)
- ds_list_create
- ds_list_destroy
- ds_list_clear
- ds_list_empty
- ds_list_size
- ds_list_add
- ds_list_set
- ds_list_delete
- ds_list_find_index
- ds_list_find_value
- ds_list_insert
- ds_list_replace
- ds_list_shuffle
- ds_list_sort
- ds_list_copy
- ds_list_read
- ds_list_write
- ds_list_mark_as_list
- ds_list_mark_as_map
- DS Maps(映射表)
- ds_map_exists
- ds_map_create
- ds_map_add
- ds_map_clear
- ds_map_copy
- ds_map_replace
- ds_map_delete
- ds_map_empty
- ds_map_size
- ds_map_find_first
- ds_map_find_last
- ds_map_find_next
- ds_map_find_previous
- ds_map_find_value
- ds_map_read
- ds_map_write
- ds_map_destroy
- ds_map_secure_save
- ds_map_secure_save_buffer
- ds_map_secure_load
- ds_map_secure_load_buffer
- ds_map_add_list
- ds_map_add_map
- ds_map_replace_list
- ds_map_replace_map
- DS Priority Queues
- DS Queues
- DS Stacks
- Debugging
- Drawing
- draw_enable_drawevent
- draw_flush
- Colour(顏色)
- colour_get_blue
- colour_get_green
- colour_get_hue
- colour_get_red
- colour_get_saturation
- colour_get_value
- draw_clear
- draw_clear_alpha
- draw_get_alpha
- draw_get_colour
- draw_getpixel
- draw_getpixel_ext
- draw_set_alpha
- draw_set_colour
- make_colour_hsv
- make_colour_rgb
- merge_colour
- Forms
- draw_arrow
- draw_button
- draw_circle
- draw_circle_colour
- draw_ellipse
- draw_ellipse_colour
- draw_healthbar
- draw_line
- draw_line_colour
- draw_line_width
- draw_line_width_colour
- draw_path
- draw_point
- draw_point_colour
- draw_rectangle
- draw_rectangle_colour
- draw_roundrect
- draw_roundrect_colour
- draw_roundrect_colour_ext
- draw_roundrect_ext
- draw_set_circle_precision
- draw_triangle
- draw_triangle_colour
- GPU
- gpu_get_alphatestenable
- gpu_get_alphatestref
- gpu_get_blendenable
- gpu_get_blendmode
- gpu_get_blendmode_dest
- gpu_get_blendmode_destalpha
- gpu_get_blendmode_ext
- gpu_get_blendmode_ext_sepalpha
- gpu_get_blendmode_src
- gpu_get_blendmode_srcalpha
- gpu_get_colorwriteenable
- gpu_get_cullmode
- gpu_get_fog
- gpu_get_state
- gpu_get_texfilter
- gpu_get_texfilter_ext
- gpu_get_texrepeat
- gpu_get_texrepeat_ext
- gpu_get_zfunc
- gpu_get_ztestenable
- gpu_get_zwriteenable
- gpu_pop_state
- gpu_push_state
- gpu_set_alphatestenable
- gpu_set_alphatestref
- gpu_set_blendenable
- gpu_set_blendmode
- gpu_set_blendmode_ext
- gpu_set_blendmode_ext_sepalpha
- gpu_set_colorwriteenable
- gpu_set_cullmode
- gpu_set_fog
- gpu_set_state
- gpu_set_texfilter
- gpu_set_texfilter_ext
- gpu_set_texrepeat
- gpu_set_texrepeat_ext
- gpu_set_zfunc
- gpu_set_ztestenable
- gpu_set_zwriteenable
- Lighting
- draw_get_lighting
- draw_light_define_ambient
- draw_light_define_direction
- draw_light_define_point
- draw_light_enable
- draw_light_get
- draw_light_get_ambient
- draw_set_lighting
- Mipmapping
- gpu_get_tex_max_aniso
- gpu_get_tex_max_aniso_ext
- gpu_get_tex_max_mip
- gpu_get_tex_max_mip_ext
- gpu_get_tex_min_mip
- gpu_get_tex_min_mip_ext
- gpu_get_tex_mip_bias
- gpu_get_tex_mip_bias_ext
- gpu_get_tex_mip_enable
- gpu_get_tex_mip_enable_ext
- gpu_get_tex_mip_filter
- gpu_get_tex_mip_filter_ext
- gpu_set_tex_max_aniso
- gpu_set_tex_max_aniso_ext
- gpu_set_tex_max_mip
- gpu_set_tex_max_mip_ext
- gpu_set_tex_min_mip
- gpu_set_tex_min_mip_ext
- gpu_set_tex_mip_bias
- gpu_set_tex_mip_bias_ext
- gpu_set_tex_mip_enable
- gpu_set_tex_mip_enable_ext
- gpu_set_tex_mip_filter
- gpu_set_tex_mip_filter_ext
- Particles
- Particle Emitters
- part_emitter_burst
- part_emitter_clear
- part_emitter_create
- part_emitter_destroy
- part_emitter_destroy_all
- part_emitter_exists
- part_emitter_region
- part_emitter_stream
- Particle Systems
- part_particles_clear
- part_particles_count
- part_particles_create
- part_particles_create_colour
- part_system_automatic_draw
- part_system_automatic_update
- part_system_clear
- part_system_create
- part_system_create_layer
- part_system_depth
- part_system_destroy
- part_system_draw_order
- part_system_drawit
- part_system_exists
- part_system_get_layer
- part_system_layer
- part_system_position
- part_system_update
- Particle Types
- part_type_alpha1
- part_type_alpha2
- part_type_alpha3
- part_type_blend
- part_type_clear
- part_type_colour_hsv
- part_type_colour_mix
- part_type_colour_rgb
- part_type_colour1
- part_type_colour2
- part_type_colour3
- part_type_create
- part_type_death
- part_type_destroy
- part_type_direction
- part_type_exists
- part_type_gravity
- part_type_life
- part_type_orientation
- part_type_scale
- part_type_shape
- part_type_size
- part_type_speed
- part_type_sprite
- part_type_step
- Simple Effects
- ef_cloud
- ef_ellipse
- ef_explosion
- ef_firework
- ef_flare
- ef_rain
- ef_ring
- ef_smoke
- ef_smokeup
- ef_snow
- ef_spark
- ef_star
- effect_clear
- effect_create_above
- effect_create_below
- Primitives(基本幾何體)
- draw_primitve_begin
- draw_primitive_begin_texture
- draw_primitive_end
- draw_vertex
- draw_vertex_colour
- draw_vertex_texture
- draw_vertex_texture_colour
- Primitive Building
- vertex_argb
- vertex_begin
- vertex_colour
- vertex_create_buffer
- vertex_create_buffer_ext
- vertex_create_buffer_from_buffer
- vertex_create_buffer_from_buffer_ext
- vertex_delete_buffer
- vertex_end
- vertex_float1
- vertex_float2
- vertex_float3
- vertex_float4
- vertex_freeze
- vertex_get_buffer_size
- vertex_get_number
- vertex_normal
- vertex_position
- vertex_position_3d
- vertex_submit
- vertex_texcoord
- vertex_ubyte4
- Vertex Formats
- vertex_format_add_colour
- vertex_format_add_custom
- vertex_format_add_normal
- vertex_format_add_position
- vertex_format_add_position_3d
- vertex_format_add_textcoord
- vertex_format_begin
- vertex_format_delete
- vertex_format_end
- Sprites_and_Tiles
- draw_enable_swf_aa
- draw_get_swf_aa_level
- draw_self
- draw_set_swf_aa_level
- draw_skeleton
- draw_skeleton_collision
- draw_skeleton_instance
- draw_skeleton_time
- draw_sprite
- draw_sprite_ext
- draw_sprite_general
- draw_sprite_part
- draw_sprite_part_ext
- draw_sprite_pos
- draw_sprite_stretched
- draw_sprite_stretched_ext
- draw_sprite_tiled
- draw_sprite_tiled_ext
- draw_tile
- draw_tilemap
- Surfaces
- application_get_position
- application_surface
- application_surface_draw_enable
- application_surface_enable
- application_surface_is_enabled
- draw_surface
- draw_surface_ext
- draw_surface_general
- draw_surface_part
- draw_surface_part_ext
- draw_surface_stretched
- draw_surface_stretched_ext
- draw_surface_tiled
- draw_surface_tiled_ext
- surface_copy
- surface_copy_part
- surface_create
- surface_create_ext
- surface_exists
- surface_free
- surface_get_height
- surface_get_texture
- surface_get_width
- surface_getpixel
- surface_getpixel_ext
- surface_reset_target
- surface_resize
- surface_save
- surface_save_part
- surface_set_target
- surface_set_target_ext
- The Application Surface
- Text
- draw_highscore
- draw_set_font
- draw_set_halign
- draw_set_valign
- draw_text
- draw_text_colour
- draw_text_ext
- draw_text_ext_colour
- draw_text_ext_transformed
- draw_text_ext_transformed_colour
- draw_text_transformed
- draw_text_transformed_colour
- Textures
- draw_texture_flush
- texture_get_height
- texture_get_texel_height
- texture_get_texel_width
- texture_get_uvs
- texture_get_width
- texture_global_scale
- texture_set_stage
- File Handing
- Fonts
- Game
- In App Purchases
- Instances
- 數學運算(Maths)
- Date and Time
- 數字方法(Number Functions)
- Vector Functions
- Matrices
- Miscellaneous
- Movement and Collisions
- Networking
- Objects
- Paths
- Physics
- 場景(Rooms)
- 常規的場景函數及變量(General Room Functions And Varibales)
- 常規圖層函數(General Layer Functions)
- 瓷片函數(TIlemap Tile Functions)
- 背景圖層(Backgrounds)
- 精靈圖層(Sprites)
- Scirpts
- Shaders
- Sprites
- Steam API
- Strings
- Timelines
- Web
- XBox_Live
- 翻譯名詞對照表