Unity
Power up your Unity games with Particle Network SDKs.
Before using, please review the prerequisites, All unity SDKs are open source, click here to view
Initialize the SDK
Before using the sdk you have to call init(Required)
ParticleNetwork.Init(ChainInfo.Ethereum);
Drag prefab to your scene
Drag the ParticleAuthService.prefab to your first scene(Required)
Drag the ParticleUnityRpc.prefab to your first scene(Required), then replace your project id, app id and client key.
Login
public async void Login()
{
// authorization is optinal, support login and sign a message
// message in evm should be hex string, in solana should be base58 string.
// message in evm support unique signature.
var authorization = new LoginAuthorization("your message", false)
// login email
var nativeResultData = await ParticleAuthService.Instance.Login(LoginType.PHONE, null, SupportAuthType.ALL, SocialLoginPrompt.SelectAccount, authorization);
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
Debug.Log(nativeResultData.data);
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}
Logout
public async void Logout()
{
var nativeResultData = await ParticleAuthService.Instance.Logout();
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
Debug.Log(nativeResultData.data);
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}
Fast logout
public async void FastLogout()
{
var nativeResultData = await ParticleAuthService.Instance.FastLogout();
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
Debug.Log(nativeResultData.data);
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}
IsLogin
Check is user login locally.
ParticleAuthServiceInteraction.IsLogin();
IsLoginAsync
Check is user login from server, recommended.
var nativeResultData = await ParticleAuthService.Instance.IsLoginAsync();
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
ShowToast($"{MethodBase.GetCurrentMethod()?.Name} Success:{nativeResultData.data}");
Debug.Log(nativeResultData.data);
}
else
{
ShowToast($"{MethodBase.GetCurrentMethod()?.Name} Failed:{nativeResultData.data}");
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
GetAddress
ParticleAuthServiceInteraction.GetAddress();
SignMessage
public async void SignMessage()
{
var message = "Hello world";
var nativeResultData =
await ParticleAuthService.Instance.SignMessage(message);
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
Debug.Log(nativeResultData.data);
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}
SignTransaction
public async void SignTransaction()
{
var transaction = "your transaction";
var nativeResultData =
await ParticleAuthService.Instance.SignTransaction(transaction);
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
Debug.Log(nativeResultData.data);
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}
SignAllTransactions
public async void SignAllTransactions()
{
var transaction1 = "transaction1";
var transaction2 ="transaction2";
Debug.Log("transaction1 = " + transaction1);
Debug.Log("transaction2 = " + transaction2);
string[] transactions = new[] { transaction1, transaction2 };
var nativeResultData =
await ParticleAuthService.Instance.SignAllTransactions(transactions);
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
Debug.Log(nativeResultData.data);
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}cc
SignAndSendTransaction
public async void SignAndSendTransaction()
{
var transaction = "transaction";
var nativeResultData =
await ParticleAuthService.Instance.SignAndSendTransaction(transaction);
if (nativeResultData.isSuccess)
{
Debug.Log(nativeResultData.data);
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}c
SignTypedData
public async void SignTypedData()
{
string typedData = "your typedata";
var nativeResultData =
await ParticleAuthService.Instance.SignTypedData(typedData,
SignTypedDataVersion.V1);
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
ShowToast($"{MethodBase.GetCurrentMethod()?.Name} Success:{nativeResultData.data}");
Debug.Log(nativeResultData.data);
}
else
{
ShowToast($"{MethodBase.GetCurrentMethod()?.Name} Failed:{nativeResultData.data}");
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}
SetChainInfoASync
public async void SetChainInfoASync()
{
// call this method to change chain info and auto create public address if that is not existed.
var nativeResultData =
await ParticleAuthService.Instance.SetChainInfoAsync(_chainInfo);
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
Debug.Log(nativeResultData.data);
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}
SetChainInfoSync
public void SetChainInfoSync()
{
// call this method to change chain info. You
ParticleNetwork.SetChainInfo(_chainInfo);
}
SetiOSModalPresentStyle
public void SetiOSModalStyle()
{
// call this method to set embedded safari fullscreen or formsheet,
// default value is formsheet
ParticleAuthServiceInteraction.SetiOSModalPresentStyle(iOSModalPresentStyle.FullScreen);
}
SetiOSMediumScreen
public void SetiOSMediumScreen()
{
// support from iOS 15,
// call this method to set embedded safari medium screen,
// default value is false,
// if you want to use medium screen,
// make sure not call SetiOSModalPresentStyle with FullScreen,
// FullScreen conflicts with medium screen.
ParticleAuthServiceInteraction.SetiOSMediumScreen(true);
}
SetSecurityAccountConfig
// set security account config,
// the first parameter is promptSettingWhenSign, default value is 1.
// the second parameter is promptMasterPasswordSettingWhenLogin, default value is 0.
// 0 no prompt
// 1 first time show prompt
// 2 every time show prompt
// 3 force show prompt
ParticleNetwork.SetSecurityAccountConfig(new SecurityAccountConfig(0, 0));
HasMasterPassword, HasPaymentPassword, HasSecurityAccount
public void HasMasterPassword()
{
var result = ParticleAuthServiceInteraction.HasMasterPassword();
Debug.Log($"HasMasterPassword {result}");
}
public void HasPaymentPassword()
{
var result = ParticleAuthServiceInteraction.HasPaymentPassword();
Debug.Log($"HasPaymentPassword {result}");
}
public void HasSecurityAccount()
{
var result = ParticleAuthServiceInteraction.HasSecurityAccount();
Debug.Log($"HasSecurityAccount {result}");
}
GetSecurityAccount
public async void GetSecurityAccount()
{
var nativeResultData = await ParticleAuthService.Instance.GetSecurityAccount();
Debug.Log(nativeResultData.data);
if (nativeResultData.isSuccess)
{
var securityAccount = JsonConvert.DeserializeObject<SecurityAccount>(nativeResultData.data);
var hasSecurityAccount = !string.IsNullOrEmpty(securityAccount.Email) ||
!string.IsNullOrEmpty(securityAccount.Phone);
Debug.Log(securityAccount);
Debug.Log($"HasMasterPassword {securityAccount.HasMasterPassword}, HasPaymentPassword {securityAccount.HasPaymentPassword}, HasSecurityAccount {hasSecurityAccount}");
}
else
{
var errorData = JsonConvert.DeserializeObject<NativeErrorData>(nativeResultData.data);
Debug.Log(errorData);
}
}
Last updated