Я написал кусок кода C # для работы на мобильных устройствах в Unity. Я тестировал на веб-камере, и она отлично работала.
Однако, когда я собрал его как APK, он не работал на моем мобильном устройстве, и проблема явно в коде C #. Я не знаком с мобильной средой и не совсем уверен, что код C # может выполняться на устройствах Android, но я думал, что Unity справится с этим.
Должен ли я в принципе признать, что C # не может быть запущен на мобильных устройствах или есть решение?
Вот мой кусок кода:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
public class MenuScript : MonoBehaviour {
Texture2D screenCap;
Texture2D border;
bool shot = false;
public Button m_YourFirstButton;
// Use this for initialization
void Start () {
screenCap = new Texture2D(300, 200, TextureFormat.RGB24, false); // 1
border = new Texture2D(2, 2, TextureFormat.ARGB32, false); // 2
border.Apply();
m_YourFirstButton.onClick.AddListener(TaskOnClick);
}
// Update is called once per frame
void Update () {
}
public void TaskOnClick()
{
StartCoroutine("Capture");
}
void OnGUI()
{
GUI.DrawTexture(new Rect(200, 100, 300, 2), border, ScaleMode.StretchToFill); // Top
GUI.DrawTexture(new Rect(200, 300, 300, 2), border, ScaleMode.StretchToFill); // Bottom
GUI.DrawTexture(new Rect(200, 100, 2, 200), border, ScaleMode.StretchToFill); // Left
GUI.DrawTexture(new Rect(500, 100, 2, 200), border, ScaleMode.StretchToFill); // Right
if (shot)
{
GUI.DrawTexture(new Rect(10, 10, 60, 40), screenCap, ScaleMode.StretchToFill);
}
}
IEnumerator Capture()
{
yield return new WaitForEndOfFrame();
screenCap.ReadPixels(new Rect(198, 98, 298, 198), 0, 0);
screenCap.Apply();
byte[] bytes = screenCap.EncodeToPNG();
//Object.Destroy(screenCap);
// For testing purposes, also write to a file in the project folder
File.WriteAllBytes(Application.dataPath + "/SavedScreen.png", bytes);
shot = true;
}
}