基于Unity的Oculus 2 VR应用Firebase数据库集成技术问询
Unity Oculus 2 VR应用集成Firebase实时数据库实现用户注册功能
正在开发基于Unity的Oculus 2 VR应用,需将应用与Firebase实时数据库集成,实现用户名及登录信息的存储功能。目前已完成Firebase初始化、用户注册相关C#代码编写,以及数据库读写权限配置,相关代码如下:
Firebase初始化脚本(FirebaseSetup.cs)
using UnityEngine; using Firebase; using Firebase.Database; using Firebase.Extensions; public class FirebaseSetup : MonoBehaviour { private DatabaseReference dbReference; void Start() { // 初始化Firebase数据库 FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { if (task.Result == DependencyStatus.Available) { // 获取Firebase应用默认实例 FirebaseApp app = FirebaseApp.DefaultInstance; // 设置自定义Firebase实时数据库URL string firebaseDatabaseURL = "https://silid-ai-939a6-default-rtdb.firebaseio.com/"; FirebaseDatabase.DefaultInstance.App.Options.DatabaseUrl = new System.Uri(firebaseDatabaseURL); // 获取数据库根节点引用 dbReference = FirebaseDatabase.DefaultInstance.RootReference; Debug.Log("Firebase初始化成功!"); } else { Debug.LogError("Firebase初始化失败。"); // 处理初始化失败逻辑 } }); } public void WriteDataToDatabase(string key, string value) { // 向数据库写入数据 dbReference.Child(key).SetValueAsync(value).ContinueWith(task => { if (task.IsCompleted && !task.IsFaulted && !task.IsCanceled) { Debug.Log("数据成功写入数据库!"); } else { Debug.LogError("数据库写入失败: " + task.Exception); } }); } }
用户注册管理脚本(DatabaseManager.cs)
using UnityEngine; using UnityEngine.SceneManagement; // 引入SceneManager using UnityEngine.UI; using Firebase; using Firebase.Database; using TMPro; public class DatabaseManager : MonoBehaviour { public TMP_InputField firstnameField; public TMP_InputField lastnameField; public TMP_InputField usernameInput; public TMP_InputField passwordInput; private string userID; private DatabaseReference dbReference; void Start() { userID = SystemInfo.deviceUniqueIdentifier; dbReference = FirebaseDatabase.DefaultInstance.RootReference; } public void CreateUser() { User newUser = new User(firstnameField.text, lastnameField.text, usernameInput.text, passwordInput.text); string json = JsonUtility.ToJson(newUser); dbReference.Child("users").Child(userID).SetRawJsonValueAsync(json); } }
用户数据模型类(User.cs)
public class User { public string firstnameInput; public string lastnameInput; public string usernameInput; public string passwordInput; public User(string firstnameInput, string lastnameInput, string usernameInput, string passwordInput) { this.passwordInput = firstnameInput; this.passwordInput = lastnameInput; this.usernameInput = usernameInput; this.passwordInput = passwordInput; } }
注:User类构造函数存在赋值错误,所有属性均被错误赋值为
passwordInput,需修正为对应属性的正确赋值:public User(string firstnameInput, string lastnameInput, string usernameInput, string passwordInput) { this.firstnameInput = firstnameInput; this.lastnameInput = lastnameInput; this.usernameInput = usernameInput; this.passwordInput = passwordInput; }
内容的提问来源于stack exchange,提问作者John Alfred Pagarigan
相关产品推荐
相关产品推荐

