- Home /
How do i get screenshots for apple submission?
Apple requires one screenshot of each size in order for it to be submitted, and these must be retina display so my screen is not bog enough to capture them. I do not have 5 different ios devices available to me. Is there a way i can aquire these screenshots some other way?
Thank you in advance!
Yes.
I made a screenshot tool to tackle the issue. Here's a script that, if attached to your main camera, let you grab a screenshot at any resolution you want. Here's how it works:
If set at "2", the "resolution$$anonymous$$odifier" parameter will grab a screenshot at twice the resolution you have in the editor. Ex: Retina is 2048x1536, so set your editor as 1024x768 and grab your screen with a modifier of 2 and you are all set.
To grab a screenshot, press play and press "P" or any other button you have set in "$$anonymous$$eyToPress".
The screenshot will go into a folder called "Screenshot" next to the asset folder of your project.
using UnityEngine;
using System.Collections;
using System;
public class prbScreenshot : $$anonymous$$onoBehaviour {
public string keyToPress = "p";
public int resolution$$anonymous$$odifier = 1;
public string prefix = "ss";
int id;
bool take = false;
void Start ()
{
if (!System.IO.Directory.Exists(Application.dataPath + "/../Screenshots"))
System.IO.Directory.CreateDirectory (Application.dataPath + "/../Screenshots");
}
void Update ()
{
if (Input.Get$$anonymous$$eyUp (keyToPress))
{
take = true;
}
}
void OnPostRender () {
if (take)
{
string dateTime = DateTime.Now.$$anonymous$$onth.ToString()+ "-" +
DateTime.Now.Day.ToString() + "_" +
DateTime.Now.Hour.ToString() + "-" +
DateTime.Now.$$anonymous$$inute.ToString() + "-" +
DateTime.Now.Second.ToString();
string filename = prefix + id.ToString() + "_" + dateTime + ".png";
Application.CaptureScreenshot((Application.dataPath + "/../Screenshots/" + filename), resolution$$anonymous$$odifier);
id++;
take = false;
}
}
}
@alexandre.fiset that code was pretty useful, you should submit it as an answer. I just changed OnPostRender to a custom function called TakeScreenshot() and called it after take=true in Update().
Answer by Naphier · Jun 06, 2015 at 05:24 AM
I made a low-cost Unity plugin for this. It's very comprehensive: you can add whatever sizes you need, it has a callback so that you can adjust positions of elements on screen if you need, it uses render to texture if you have it available (Unity 5 or newer or Unity Pro), or otherwise it uses bilinear scaling. Super easy to use!
Answer by Eno-Khaon · Jun 05, 2015 at 10:01 PM
You could always try faking it. Application.CaptureScreenshot() gives the option to increase the effective resolution by set amounts, so if you set the Unity window to a specific fraction of that, then take a screenshot from there, you'll have a high-resolution screenshot.
Alternatively, I would imagine you can force the game to run at a greater resolution than your monitor can display and get a screenshot anyway, but I'm afraid I don't know the ins and outs of Apple.
Edit: This general question has also come up here, among other places, so there are always more solutions than what I offered.
You could probably use the Supersize parameter of the CaptureScreenshot() to get screenshots at a higher resolution than your monitor can display.
Answer by educaPix · Apr 18, 2016 at 01:30 PM
I have created a full solution for this problem: Multi Screenshots Suite
Main Features:
1-click to take all screenshots (all resolutions & languages).
1-click to insert them into the corresponding device (iPhone, iPad,...) with custom background, title, subtitle,...
Full features and video here: https://www.assetstore.unity3d.com/en/#!/content/59542
I hope you find it useful!