Desenvolvimento Unity - o uso de recursos práticos no terminal móvel (Android/IOS)

O objetivo do projeto do mecanismo Unity é permitir que os desenvolvedores usem o mesmo código para criar jogos e aplicativos em diferentes plataformas sem ter que se preocupar com detalhes de implementação específicos da plataforma.

Como manter a tela sempre ligada? Como obter o nível atual da bateria do celular? como…?

Aqui estão alguns recursos e métodos úteis:


1. Evite que a tela durma, para que ela permaneça sempre ligada

Screen.sleepTimeout = SleepTimeout.NeverSleep;

SleepTimeout.NeverSleep é um valor especial que impede que a tela entre no modo de suspensão, de modo que ela permaneça ligada.

注意,这个设置可能会导致用户的电池电量消耗增加, portanto, se você não precisa manter a tela sempre ligada, pode ser necessário redefinir Screen.sleepTimeout para seu valor padrão (geralmente SleepTimeout.SystemSetting) para que a tela possa dormir automaticamente após um período de inatividade.

Este código está disponível nas plataformas Android e iOS. Quando você usa a linha Screen.sleepTimeout = SleepTimeout.NeverSleep;, o mecanismo do Unity manipula automaticamente as chamadas subjacentes específicas da plataforma para impedir que a tela entre no modo de suspensão.

No entanto, esteja ciente de que, embora esse código possa ser executado em várias plataformas, o comportamento real do dispositivo pode ser afetado pelas configurações do sistema do usuário ou por outros aplicativos. Por exemplo, se o usuário definiu um tempo limite de tela curto ou está executando algum aplicativo que controla a suspensão da tela, a tela ainda pode desligar automaticamente após um determinado período de tempo. Portanto, embora esse código funcione na maioria dos casos, não é garantido que impeça a tela de hibernar em todos os casos.


2. Obtenha a orientação do dispositivo: Você pode usar Input.deviceOrientation para obter a orientação atual do dispositivo, por exemplo:

DeviceOrientation deviceOrientation = Input.deviceOrientation;

3. Ajuste a orientação da tela: Você pode usar Screen.orientation para definir a orientação da tela

Screen.orientation = ScreenOrientation.LandscapeLeft;

Isso definirá a orientação da tela como paisagem (com o lado esquerdo do dispositivo na parte superior).


4. Controle o brilho da tela: Você pode usar Screen.brightness para ajustar o brilho da tela (valor entre 0 e 1):

Screen.brightness = 0.5f;

5. Verifique a conexão de rede: Você pode usar Application.internetReachability para verificar o status da conexão de rede do dispositivo, por exemplo:

if (Application.internetReachability == NetworkReachability.NotReachable) {
    
    
    Debug.Log("没有网络连接");
} else if (Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork) {
    
    
    Debug.Log("通过运营商数据网络连接互联网");
} else if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork) {
    
    
    Debug.Log("通过局域网连接互联网");
}

6. Obtenha as informações da versão do sistema operacional: Você pode usar SystemInfo.operatingSystem para obter as informações da versão do sistema operacional:

string osVersion = SystemInfo.operatingSystem;

7. Obtenha o identificador exclusivo do dispositivo: Você pode usar SystemInfo.deviceUniqueIdentifier para obter o identificador exclusivo do dispositivo:

string deviceID = SystemInfo.deviceUniqueIdentifier;

Observe que esta API está geralmente disponível, mas alguns fornecedores de sistemas a reformularam e ela pode estar vazia

8. Obtenha o modelo do dispositivo: SystemInfo.deviceModel pode obter as informações do modelo do dispositivo, por exemplo:

string deviceModel = SystemInfo.deviceModel;

A classe SystemInfo no Unity fornece muitas propriedades que podem ser usadas para obter informações sobre o hardware e software do dispositivo atual,Vou publicar um artigo posteriormente, especificamente para a classe SystemInfo para enumerar o uso de cada atributo


9. Determine se está carregando: Você pode usar SystemInfo.batteryStatus para obter o status de carregamento do dispositivo:

if (SystemInfo.batteryStatus == BatteryStatus.Charging)
{
    
    
    Debug.Log("设备正在充电");
}

10. Obtenha o nível da bateria: Você pode usar SystemInfo.batteryLevel para obter o nível atual da bateria do dispositivo (entre 0 e 1):

float batteryLevel = SystemInfo.batteryLevel;

11. Saia do aplicativo:

Application.Quit();

Observe que esta função não tem efeito no editor


12. Controle a taxa de quadros do jogo: Você pode definir a taxa de quadros alvo do jogo através da propriedade Application.targetFrameRate:

Application.targetFrameRate = 60; // 设置游戏目标帧率为 60fps

No Unity, também é possível desbloquear a taxa de quadros para que o aplicativo seja executado na taxa de quadros mais alta possível. Para fazer isso, a taxa de quadros alvo precisa ser definida paraApplication.targetFrameRate = -1
A remoção do limite de taxa de quadros em dispositivos móveis pode causar superaquecimento e esgotamento mais rápido da bateria. Portanto, ao publicar um aplicativo móvel, é recomendável definir o limite de taxa de quadros para um valor razoável, como 30 ou 60, ou permitir que os usuários escolham por conta própria. Se você deseja usar diferentes limites de taxa de quadros em diferentes plataformas, pode usar diretivas de pré-processamento dependentes da plataforma

    void Start()
    {
    
    
        #if UNITY_EDITOR
        Application.targetFrameRate = -1;
        #elif UNITY_IOS || UNITY_ANDROID
        Application.targetFrameRate = 60;
        #else
        Application.targetFrameRate = 30;
        #endif
    }
}

13. Verifique se o dispositivo oferece suporte a um determinado recurso: Você pode usar métodos e propriedades como SystemInfo.SupportsRenderTextureFormat, SystemInfo.supportsImageEffects, SystemInfo.supports3DTextures para verificar se o dispositivo oferece suporte a um determinado recurso:

if (SystemInfo.supportsImageEffects)
{
    
    
    // 设备支持图像特效
}

14. Obtenha e defina o conteúdo da área de transferência: Você pode usar a propriedade GUIUtility.systemCopyBuffer para obter e definir o conteúdo da área de transferência:

GUIUtility.systemCopyBuffer = "Hello, World!"; // 设置剪贴板的内容
string clipboardContent = GUIUtility.systemCopyBuffer; // 获取剪贴板的内容

15. Obter entrada de toque: Você pode usar Input.touches para obter todos os eventos de toque do quadro atual:

foreach (Touch touch in Input.touches)
{
    
    
    Vector2 touchPosition = touch.position;
    // 处理触摸事件
}

16. Alternar entre tela cheia e tela não cheia: Você pode definir se o aplicativo será exibido em tela cheia por meio da propriedade Screen.fullScreen:

Screen.fullScreen = true; // 设置为全屏
Screen.fullScreen = false; // 设置为非全屏

17. Entrada de detecção de gravidade: O Unity pode receber e processar a entrada de detecção de gravidade do dispositivo por meio da classe Input, por exemplo:

Vector3 deviceAcceleration = Input.acceleration;

Neste exemplo, Input.acceleration retorna um objeto Vector3 representando a aceleração do dispositivo em três eixos (x, y, z).


18. Vibrar: Use Handheld.Vibrate() para vibrar o dispositivo:

Handheld.Vibrate();

Observe que esta API está disponível em dispositivos Android e iOS.
O comportamento desta função pode ser diferente em diferentes plataformas, e a duração e a intensidade da vibração podem não ser controláveis ​​em algumas plataformas. Embora a maioria dos dispositivos iOS suporte vibração, 但仍有一些特定型号或设置可能会影响其功能.

Para a vibração de dispositivos IOS, você pode usar a API abaixo

19. Feedback de vibração do dispositivo:

Em dispositivos iOS, o Unity oferece suporte a feedback de vibração complexo. Você pode usar o mecanismo Taptic do dispositivo iOS para fornecer feedback físico. Isso requer o uso de iOS.Device.SetTapticEngineFeedbackPreparation e iOS.Device.TriggerTapticEngineFeedbackPeek, iOS.Device.TriggerTapticEngineFeedbackPop, iOS.Device.TriggerTapticEngineFeedbackNope e outras APIs.

Observe que diferentes dispositivos e sistemas operacionais podem não oferecer suporte a essas APIs em graus variados. Ao usar essas APIs, você deve primeiro verificar se o dispositivo oferece suporte a esses recursos ou fornecer uma estratégia de retorno de chamada apropriada em dispositivos não compatíveis.


A API mencionada acima precisa levar em consideração a privacidade do usuário e o consumo de energia do dispositivo ao usá-lo.

Ao usar APIs que possam afetar a privacidade do usuário (como identificadores exclusivos do dispositivo), é necessário declarar claramente na política de privacidade do aplicativo para garantir a conformidade com todos os regulamentos de privacidade relevantes.
Ao usar APIs que podem aumentar o consumo de energia do dispositivo (como vibrar ou configurar a tela para ficar ligada), você precisa otimizar seu aplicativo o máximo possível para reduzir o impacto na duração da bateria.

おすすめ

転載: blog.csdn.net/qq_33795300/article/details/130745929