04.sprite_kit前瞻之纹理

本文探讨了SpriteKit中纹理的使用与管理方法,详细解释了纹理的概念、用途及如何在多个精灵上共享图像资源,同时介绍了SpriteKit如何简化纹理管理,并提供了控制纹理管理以优化应用性能的建议。

04.Sprite_Kit前瞻之纹理

专业词汇扫盲:
textures:纹理,计算机图形学中的纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,通常我们更多地称之为花纹。

纹理说白了就是共享的图像,用来渲染精灵(sprites),打个比方呢就是给精灵穿件“衣服”。那么什么时候用纹理呢?比如我们要将一张图片应用到多个精灵时,就需要纹理了,试想下无数个精灵身着同一款“衣服”。通常我们通过加载存储在应用程序bundle 中的图像文件创建纹理。不过,Sprite Kit 在运行过程中仍然能通过Core Graphices images或者节点树来创建纹理。

Sprite Kit 简化了纹理管理方式,只需要通过简单代码就能加载和适用于图形硬件。此外纹理管理一般由Sprite Kit框架自动接管。当然也有例外情况,比如你正在发开一款拥有大量图片的游戏,为了提高应用性能就应该人为控制纹理管理部分。主要是通过明确通知Sprite Kit框架去加载纹理来实现。

通常在游戏中,我们将一组具有联系的纹理整合在一起,叫做texture atals。比如人物的一个技能动作,可以细分为多张图片,假如一页页按顺序播放,就感觉在播放动画一般。通过texture atals,大大提高了渲染执行效率

这段代码是用 Python 编写的,定义了一个名为 Tile 的类。这个类用于在 Pygame 中显示游戏中的图像。 注释如下: ```python class Tile(pygame.sprite.Sprite): # 定义 Tile 类,继承 Pygame.sprite.Sprite 类 def __init__(self,pos,groups,sprite_type,surface = pygame.Surface((TILESIZE,TILESIZE))): # Tile 类的构造方法,传入 pos、groups、sprite_type 和 surface 四个参数 # pos 表示 Tile 对象在游戏中的位置 # groups 表示 Tile 对象所属的组 # sprite_type 表示 Tile 对象的类型 # surface 表示 Tile 对象的表面,默认为大小为 TILESIZE 的 Surface 对象 super().__init__(groups) # 调用父类的构造方法,进行初始化 self.sprite_type = sprite_type # 设置 Tile 对象的 sprite_type 属性 y_offset = HITBOX_OFFSET[sprite_type] # 设置 Tile 对象的 y_offset 属性,值为 HITBOX_OFFSET[sprite_type] self.image = surface # 设置 Tile 对象的 image 属性,值为传入的 surface 参数 if sprite_type == 'object': # 若 sprite_type 为 'object',则将 Tile 对象的 rect 设置为在 pos 坐标左上角位置的矩形 # 同时将 Tile 对象的 hitbox 属性上下扩展了 HITBOX_OFFSET[sprite_type] 个像素 self.rect = self.image.get_rect(topleft = (pos[0],pos[1] - TILESIZE)) else: # 否则,将 Tile 对象的 rect 直接设置为 pos 坐标的矩形 # 同时将 Tile 对象的 hitbox 属性上下扩展了 0 个像素 self.rect = self.image.get_rect(topleft = pos) self.hitbox = self.rect.inflate(0,y_offset) # 设置 Tile 对象的 hitbox 属性,值为 rect 属性上下扩展了 y_offset 个像素后的矩形 ``` 该代码主要是设置 Tile 对象的属性,包括 sprite_type、image、rect 和 hitbox 等属性。其中,sprite_type 表示 Tile 对象的类型,image 表示 Tile 对象的表面,rect 表示 Tile 对象在游戏中的位置和大小,hitbox 表示 Tile 对象的碰撞检测区域。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值