cancel
Showing results for 
Search instead for 
Did you mean: 

I have a problem with building my game

michaelm9945
Not applicable
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
4 REPLIES 4

cybereality
Grand Champion
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);

michaelm9945
Not applicable
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?

braun0
Honored Guest
"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.

cybereality
Grand Champion
Just read the error message you are getting. It tells you what line the problem is on.