Unity 3D – Game Engine – Responsive and Adaptive Apps
Responsive Web Design (RWD) is a Apps design approach aimed at crafting sites to provide an optimal viewing experience—easy reading and navigation with a minimum of resizing, panning, and scrolling—across a wide range of devices (from mobile phones to desktop computer monitors)
Basics Screen.width and Screen.height
Inside Hierarchy create:
– Main Camera
– GUI Text
– GUI Texture> Inspector> W=200(width pix) H=200(height pix), attach ‘Adaptive.js’
Adaptive.js
#pragma strict // Hierarchy DRAG E DROP over var GUI Text in Inspector var scoreTextX : GUIText; private var screenres : String; function Update () { // it will check resolution every frame screenres = Screen.width + " " + Screen.height; scoreTextX.text = "Screen width & height (pix) "+ screenres; }
Hierarchy> GUI Texture> Adaptive.js DRAG AND DROP over public var ‘scoreTextX’ the ‘GUI Text’ game object.
The result on my Samsung SmartPhone (Landscape) is: Screen width & height (pix) 800 480
GUI Texture – Full Screen
Adaptive.js
#pragma strict // Hierarchy DRAG E DROP over var GUI Text in Inspector var scoreTextX : GUIText; private var screenres : String; function Update () { // it will check resolution every frame screenres = Screen.width + " " + Screen.height; scoreTextX.text = "Screen width & height (pix) "+ screenres; // Move the object to (0, 0, 0) transform.position = Vector3(0, 0, 0); // equal than Inspector> Position X=0 Y=0 Z=0 guiTexture.pixelInset = new Rect(0f, 0f, Screen.width, Screen.height); // equal than Inspector> W=800 H=480 }
Notice:
Position X=0 Y=0 Z=0
Inspector> W=800 H=480
GUI Texture – Half Left Screen
Adaptive.js
#pragma strict // Hierarchy DRAG E DROP over var GUI Text in Inspector var scoreTextX : GUIText; private var screenres : String; function Update () { // it will check resolution every frame screenres = Screen.width + " " + Screen.height; scoreTextX.text = "Screen width & height (pix) "+ screenres; // Move the object to (0, 0, 0) transform.position = Vector3(0, 0, 0); guiTexture.pixelInset = new Rect(0f, 0f, Screen.width*0.5, Screen.height); }
GUI Texture – Half Right Screen
Adaptive.js
#pragma strict // Hierarchy DRAG E DROP over var GUI Text in Inspector var scoreTextX : GUIText; private var screenres : String; function Update () { // it will check resolution every frame screenres = Screen.width + " " + Screen.height; scoreTextX.text = "Screen width & height (pix) "+ screenres; // Move the object transform.position = Vector3(0.5, 0, 0); guiTexture.pixelInset = new Rect(0f, 0f, Screen.width*0.5, Screen.height); }
GUI Texture – Square – bottom left
#pragma strict // Hierarchy DRAG E DROP over var GUI Text in Inspector var scoreTextX : GUIText; private var screenres : String; function Update () { // it will check resolution every frame screenres = Screen.width + " " + Screen.height; scoreTextX.text = "Screen width & height (pix) "+ screenres; // Move the object, these values are fronm 0 to 1 transform.position = Vector3(0, 0, 0); // Create a square based on Screen.height*0.5 (half of screen height) guiTexture.pixelInset = new Rect(0f, 0f, Screen.height*0.5, Screen.height*0.5); }
GUI Texture – Square – top left
#pragma strict // Hierarchy DRAG E DROP over var GUI Text in Inspector var scoreTextX : GUIText; private var screenres : String; function Update () { // it will check resolution every frame screenres = Screen.width + " " + Screen.height; scoreTextX.text = "Screen width & height (pix) "+ screenres; // Move the object, these values are fronm 0 to 1 transform.position = Vector3(0, 0.5, 0); // Create a square based on Screen.height*0.5 (half of screen height) guiTexture.pixelInset = new Rect(0f, 0f, Screen.height*0.5, Screen.height*0.5); }
GUI Texture – Square – center
#pragma strict // Hierarchy DRAG E DROP over var GUI Text in Inspector var scoreTextX : GUIText; private var screenres : String; private var btnWidth : int; private var btnHeight : int; private var insetX : int; private var insetY : int; function Update () { // debug code - it will check resolution every frame screenres = Screen.width + " " + Screen.height; scoreTextX.text = "Screen width & height(pix) "+ screenres; // texture size is based on display resolution (pixel) btnWidth = Screen.height*0.5; btnHeight = Screen.height*0.5; // if you want change aspect ratio here // calcolate inset (pixel) insetX = -1*(btnWidth/2); // we need negative value (pixel) insetY = -1*(btnHeight/2); // center position X Y (Z is used to create layers of textures (values from 0 to 1) transform.position = Vector3(0.5, 0.5, 0); // GUI Texture responsive size and position guiTexture.pixelInset = new Rect(insetX, insetY, btnWidth, btnHeight); }