查看: 1526|回复: 0
打印 上一主题 下一主题

Unity3D中2D元素的处理

[复制链接]

5552

主题

2

听众

8万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
11

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-2-21 14:49:42 |只看该作者 |倒序浏览
先前在绘制2D元素的时候用的是GUI的DrawTexture()。用法很简单,类似这样
var tex : Texture;
DrawTexture( Rect( left, top, width, height ), tex );
    在屏幕的Rect位置绘制tex。但是官方文档在Graphics的DrawTexture()函数介绍中又这么一句话
    It's probably better to use GUI.DrawTexture for GUI code.
    这么说来Graphics更适合于绘制2D元素,而且,更适合于动画,一张纹理上多帧元素。这个函数不是很容易用,参数较多而且有点怪异,但是用了之后会觉得十分的合理。这个方法有4个重载,只讲最复杂的一个。
static function DrawTexture (screenRect : Rect, texture : Texture, sourceRect : Rect, leftBorder : int, rightBorder : int, topBorder : int, bottomBorder : int, color : Color, mat : Material = null) : void
screenRect:这个参数就是在屏幕的以像素为单位。left,top为起始点,创建一个大小width,height的矩形。Rect( left, top, width, height );
sourceRect:就是纹理对象。
sourceRect:在纹理上取一个矩形,缩放后放到screenRect内,所以通常这两个大小一定要一样,如果要缩放仅缩放screenRect就行了。但是有2个重要的是,第一、这个矩形的单位是相对大小,跟uv一样,是百分比的,大小在 0-1 之内。第二、起始点为left,button。也就是说以左下角为起始点。
border:后面4个border以像素为单位,缩放值,暂且不管,全给0,也就是原始大小。
color:颜色,类型为 Color,RGBA格式,0-1(0/255.0 - 255/255.0),默认为 Color( 0.5, 0.5, 0.5, 0.5 );
mat : 材质,暂时不管。
    此代码不能放在任意位置,也就说必须有约束条件。
you should only do that from EventType.Repaint events
    就是说触发了Repaint消息,此函数才能执行,而这个消息必须在OnGUI() 内执行。像这样
var tex : Texture;
function OnGUI()
{
    if( Event.current.type.Equals(EventType.Repaint) )
        Graphics.DrawTexture(......);
}

转自:http://blog.163.com/long_wtf/blog/static/1855532702011102322816678/
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-2-24 17:58 , Processed in 0.063754 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部