Skip to main content
Up and Coming
March 9, 2015

I have a problem with building my game

When I build my game for Windows, it starts by "Compiling Scripts" then it just stops building and a warning sign appears.

This is the following warning sign

Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.
UnityEngine.Transform:set_parent(Transform)
OVRUGUI:RiftPresentGUI(GameObject) (at Assets/OVR/Scripts/Util/OVRUGUI.cs:101)
OVRMainMenu:ShowRiftPresentGUI() (at Assets/OVR/Scripts/Util/OVRMainMenu.cs:974)
OVRMainMenu:Start() (at Assets/OVR/Scripts/Util/OVRMainMenu.cs:362)

And this is the script for "OVRUGUI"


/************************************************************************************

Copyright : Copyright 2014 Oculus VR, LLC. All Rights reserved.

Licensed under the Oculus VR Rift SDK License Version

3.2 (the "License");
you may not use the Oculus VR Rift SDK except in compliance with the License,
which is provided at the time of installation or download, or which
otherwise accompanies this software in either electronic or hard copy form.

You may obtain a copy of the License at

http://www.oculusvr.com/licenses/LICENSE-3.2

Unless required by applicable law or agreed to in writing, the Oculus VR SDK
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

************************************************************************************/

// Use the Unity new GUI with Unity 4.6 or above.
#if UNITY_4_6 || UNITY_5_0
#define USE_NEW_GUI
#endif

using UnityEngine;
#if USE_NEW_GUI
using UnityEngine.UI;
# endif
using System.Collections;

//-------------------------------------------------------------------------------------
/// <summary>
/// Class for Unity new GUI built in 4.6
/// </summary>
public class OVRUGUI
{
#if USE_NEW_GUI

#region UIGameObject
private static GameObject NewGUIManager;
private static GameObject RiftPresent;
private static GameObject LowPersistence;
private static GameObject VisionMode;
private static GameObject FPS;
private static GameObject Prediction;
private static GameObject IPD;
private static GameObject FOV;
private static GameObject Height;
private static GameObject SpeedRotationMutipler;
private static GameObject DeviceDetection;
private static GameObject ResolutionEyeTexture;
private static GameObject Latencies;
#endregion

#region VRVariables
[HideInInspector]
public static string strRiftPresent = null;
[HideInInspector]
public static string strLPM = null; //"LowPersistenceMode: ON";
[HideInInspector]
public static string strVisionMode = null;//"Vision Enabled: ON";
[HideInInspector]
public static string strFPS = null;//"FPS: 0";
[HideInInspector]
public static string strIPD = null;//"IPD: 0.000";
[HideInInspector]
public static string strPrediction = null;//"Pred: OFF";
[HideInInspector]
public static string strFOV = null;//"FOV: 0.0f";
[HideInInspector]
public static string strHeight = null;//"Height: 0.0f";
[HideInInspector]
public static string strSpeedRotationMultipler = null;//"Spd. X: 0.0f Rot. X: 0.0f";
[HideInInspector]
public static OVRPlayerController PlayerController = null;
[HideInInspector]
public static OVRCameraRig CameraController = null;
//[HideInInspector]
//public static string strDeviceDetection = null;// Device attach / detach
[HideInInspector]
public static string strResolutionEyeTexture = null;// "Resolution : {0} x {1}"
[HideInInspector]
public static string strLatencies = null;// Device attach / detach
#endregion

[HideInInspector]
public static bool InitUIComponent = false;
private static float offsetY = 55.0f;
private static bool isInited = false;
private static int numOfGUI = 0;
private static GameObject text;

/// <summary>
/// It's for rift present GUI
/// </summary>
public static void RiftPresentGUI(GameObject GUIMainOBj)
{
RiftPresent = ComponentComposition(RiftPresent);
RiftPresent.transform.parent = GUIMainOBj.transform;
RiftPresent.name = "RiftPresent";
RectTransform r = RiftPresent.GetComponent<RectTransform>();
r.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
r.localScale = new Vector3(1.0f, 1.0f, 1.0f);
r.localEulerAngles = Vector3.zero;

Text t = RiftPresent.GetComponentInChildren<Text>();
t.text = strRiftPresent;
t.fontSize = 20;
}

/// <summary>
/// It's for rift present GUI
/// </summary>
public static void UpdateGUI()
{
if (InitUIComponent && !isInited)
{
InitUIComponents();
}

UpdateVariable();
}


/// <summary>
/// Update VR Variables
/// </summary>
static void UpdateVariable()
{
NewGUIManager.transform.localPosition = new Vector3(0.0f, 100.0f, 0.0f);

if (!string.IsNullOrEmpty(strLPM))
LowPersistence.GetComponentInChildren<Text>().text = strLPM;
if (!string.IsNullOrEmpty(strVisionMode))
VisionMode.GetComponentInChildren<Text>().text = strVisionMode;
if (!string.IsNullOrEmpty(strFPS))
FPS.GetComponentInChildren<Text>().text = strFPS;
if (!string.IsNullOrEmpty(strPrediction))
Prediction.GetComponentInChildren<Text>().text = strPrediction;
if (!string.IsNullOrEmpty(strIPD))
IPD.GetComponentInChildren<Text>().text = strIPD;
if (!string.IsNullOrEmpty(strFOV))
FOV.GetComponentInChildren<Text>().text = strFOV;
if (!string.IsNullOrEmpty(strResolutionEyeTexture))
ResolutionEyeTexture.GetComponentInChildren<Text>().text = strResolutionEyeTexture;
if (!string.IsNullOrEmpty(strLatencies))
Latencies.GetComponentInChildren<Text>().text = strLatencies;

if (PlayerController != null)
{
if (!string.IsNullOrEmpty(strHeight))
Height.GetComponentInChildren<Text>().text = strHeight;
if (!string.IsNullOrEmpty(strSpeedRotationMultipler))
SpeedRotationMutipler.GetComponentInChildren<Text>().text = strSpeedRotationMultipler;
}
}

/// <summary>
/// Initialize UI GameObjects
/// </summary>
static void InitUIComponents()
{
float posY = 0.0f;
int fontSize = 20;

NewGUIManager = new GameObject();
NewGUIManager.name = "GUIManager";
NewGUIManager.transform.parent = GameObject.Find("OVRGUIMain").transform;
NewGUIManager.transform.localPosition = Vector3.zero;
NewGUIManager.transform.localEulerAngles = Vector3.zero;
NewGUIManager.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);

// Print out for Low Persistence Mode
if (!string.IsNullOrEmpty(strLPM))
{
LowPersistence = UIObjectManager(LowPersistence, "LowPersistence", posY -= offsetY, strLPM, fontSize);
}

// Print out for VisionMode
if (!string.IsNullOrEmpty(strVisionMode))
{
VisionMode = UIObjectManager(VisionMode, "VisionMode", posY -= offsetY, strVisionMode, fontSize);
}

// Print out for FPS
if (!string.IsNullOrEmpty(strFPS))
{
FPS = UIObjectManager(FPS, "FPS", posY -= offsetY, strFPS, fontSize);
}

// Print out for Prediction
if (!string.IsNullOrEmpty(strPrediction))
{
Prediction = UIObjectManager(Prediction, "Prediction", posY -= offsetY, strPrediction, fontSize);
}

// Print out for IPD
if (!string.IsNullOrEmpty(strIPD))
{
IPD = UIObjectManager(IPD, "IPD", posY -= offsetY, strIPD, fontSize);
}

// Print out for FOV
if (!string.IsNullOrEmpty(strFOV))
{
FOV = UIObjectManager(FOV, "FOV", posY -= offsetY, strFOV, fontSize);
}

if (PlayerController != null)
{
// Print out for Height
if (!string.IsNullOrEmpty(strHeight))
{
Height = UIObjectManager(Height, "Height", posY -= offsetY, strHeight, fontSize);
}

// Print out for Speed Rotation Multiplier
if (!string.IsNullOrEmpty(strSpeedRotationMultipler))
{
SpeedRotationMutipler = UIObjectManager(SpeedRotationMutipler, "SpeedRotationMutipler", posY -= offsetY, strSpeedRotationMultipler, fontSize);
}
}

// Print out for Resoulution of Eye Texture
if (!string.IsNullOrEmpty(strResolutionEyeTexture))
{
ResolutionEyeTexture = UIObjectManager(ResolutionEyeTexture, "Resolution", posY -= offsetY, strResolutionEyeTexture, fontSize);
}

// Print out for Latency
if (!string.IsNullOrEmpty(strLatencies))
{
Latencies = UIObjectManager(Latencies, "Latency", posY -= offsetY, strLatencies, 17);
posY = 0.0f;
}

InitUIComponent = false;
isInited = true;

}

static GameObject UIObjectManager(GameObject gameObject, string name, float posY, string text, int fontSize)
{
gameObject = ComponentComposition(gameObject);
gameObject.name = name;
gameObject.transform.parent = NewGUIManager.transform;

RectTransform r = gameObject.GetComponent<RectTransform>();
r.localPosition = new Vector3(0.0f, posY -= offsetY, 0.0f);

Text t = gameObject.GetComponentInChildren<Text>();
t.text = text;
t.fontSize = fontSize;
gameObject.transform.localEulerAngles = Vector3.zero;

r.localScale = new Vector3(1.0f, 1.0f, 1.0f);

return gameObject;

}

/// <summary>
/// Component composition
/// </summary>
/// <returns> Composed game object. </returns>
static GameObject ComponentComposition(GameObject GO)
{
GO = new GameObject();
GO.AddComponent<RectTransform>();
GO.AddComponent<CanvasRenderer>();
GO.AddComponent<Image>();
GO.GetComponent<RectTransform>().sizeDelta = new Vector2(350f, 50f);
GO.GetComponent<Image>().color = new Color(7f / 255f, 45f / 255f, 71f / 255f, 200f / 255f);

text = new GameObject();
text.AddComponent<RectTransform>();
text.AddComponent<CanvasRenderer>();
text.AddComponent<Text>();
text.GetComponent<RectTransform>().sizeDelta = new Vector2(350f, 50f);
text.GetComponent<Text>().font = (Font)Resources.Load("DINPro-Bold");
text.GetComponent<Text>().alignment = TextAnchor.MiddleCenter;

text.transform.parent = GO.transform;
text.name = "TextBox";

return GO;
}

#endif
    This topic has been closed for replies.

    4 replies

    Inspiring
    March 9, 2015
    Change OVRUGUI.cs line 285:
    //text.transform.parent = GO.transform;
    text.transform.SetParent (GO.transform);

    And line 248:
    //gameObject.transform.parent = NewGUIManager.transform;
    gameObject.transform.SetParent (NewGUIManager.transform);
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
    Up and Coming
    March 9, 2015
    I tried to change line 248 "gameObject = ComponentComposition(gameObject);"

    to

    "//gameObject.transform.parent = NewGUIManager.transform;
    gameObject.transform.SetParent (NewGUIManager.transform);"

    and Line 285 "//gameObject.transform.parent = NewGUIManager.transform;
    gameObject.transform.SetParent (NewGUIManager.transform);"

    to

    "//text.transform.parent = GO.transform;
    text.transform.SetParent (GO.transform);"

    But, it still doesn't work. Did I do something wrong?
    Up and Coming
    April 12, 2015
    "cybereality" wrote:
    Change OVRUGUI.cs line 285:
    //text.transform.parent = GO.transform;
    text.transform.SetParent (GO.transform);

    And line 248:
    //gameObject.transform.parent = NewGUIManager.transform;
    gameObject.transform.SetParent (NewGUIManager.transform);



    I am having this issue as well. However, the lines that Cyber has suggested be changed, are already changed in SDK 0.5.0. So something else must be causing this notification.
    Inspiring
    April 12, 2015
    Just read the error message you are getting. It tells you what line the problem is on.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV