月份:2011年6月

Unity的遮罩技术简述

遮罩技术是一个基本的技术方法,有很多很多中用法.你可以在Flash中经常看到遮罩的使用,它可以另一些视觉元素更加惊艳.当我看到Unity中没有包含任何几何体和图片的遮罩技术很不爽,不过,幸运的我找到了解决方案,就是”Depth Mask”着色器.

先看看着色器的代码,没错,非常短.

Shader “Depth Mask” {
    SubShader{
        ColorMask 0
        Pass {}
    }
}

如果用了多维材质,你需要像下面这样写:

Shader “Depth Mask Complex”
{
    SubShader
    {
        Tags {“Queue” = “Background”}
        Blend SrcAlpha OneMinusSrcAlpha
        Lighting Off
        ZWrite On
        ZTest Always
        Pass
        {
            Color(0,0,0,0)
        }
    }
}

如果你想更改任何一个物体材质的特性座遮罩(纹理,颜色等等)将是失败的,除非你用SetPass()去设置着色器,关于这个方法的文档在这(http://unity3d.com/support/documentation/ScriptReference/Material.SetPass.html).

示例项目下载:http://pixelplacement.com/wp-content/uploads/2011/02/Masking.zip

原文:http://pixelplacement.com/2011/02/15/masking-in-unity/
转载请注明来自1Vr.Cn

Unity中快速给Object在屏幕上定位

让你的UI元素很轻松的固定在用户屏幕的九个位置:左上,中上,右上等等,同时能自匹配屏幕尺寸,方便多个设备间的移植.这个超级简单的C#扩展脚本,提供了一个叫”ScreenPlacement”的方法.

将脚本添加倒项目中后,利用ScreenPlacement就可以很容易的来把你的内容放置到屏幕的九个位置之一.

//放置一个Object在屏幕的右下角:
transform.ScreenPlacement(ScreenPosition.LowerRight);

//放置一个Object到屏幕的右下角,且距离屏幕右侧60像素,距离底部20像素:
transform.ScreenPlacement(ScreenPosition.LowerRight, new Vector2(60,20));

如果你要切换一个相机来协助显示一些内容的话,你需要将ScreenPosition传递给你的那个相机,以确保可以准确计算该相机中的内容显示.

//放置一个Object在屏幕的右下角,以MyInterfaceCamera为显示参考:
transform.ScreenPlacement(ScreenPosition.LowerRight, MyInterfaceCamera);

//放置一个Object到屏幕的右下角,且距离屏幕右侧60像素,距离底部20像素,以MyInterfaceCamera为显示参考:
transform.ScreenPlacement(ScreenPosition.LowerRight, new Vector2(60,20), MyInterfaceCamera);

点击下载脚本包

原文:http://pixelplacement.com/2011/05/13/simplifying-screen-positioning-in-unity/
转载请注明来自1Vr.Cn