Giter Club home page Giter Club logo

unitylauncherpro's Introduction

UnityLauncherPro

Build Status Downloads GitHub license VirusTotal scan now CodeQL

Handle all your Unity versions and Projects easily!

Features

  • Automagically Open Projects with Correct Unity Version
  • Display Recent Projects list with last modified date and project version info
  • List more than 40 recent projects!
  • Quickly Explore Project Folders
  • List installed Unity versions, can easily Run, Explore installation folder, View release notes
  • Download Missing Unity Versions in Browser
  • Can be used from commandline UnityLauncherPro.exe -projectPath "c:/project/path/"
  • Explorer context menu integration to launch project from folder
  • Use custom commandline launcher arguments per project (optional)
  • Show project git branch info (optional)
  • Current platform display and selection
  • Show list of released Unity versions/updates and view release notes page
  • 1-Click create new project with selected Unity version
  • Option to show missing projects in the list (if folder was removed)
  • 1-Click Start ADB Logcat with colors in command prompt
  • 1-Click browse editor log folder, crash logs folder, browse asset downloads folder, browse player logs folder
  • Quick Unity Editor Process Kill (press ALT+Q in the selected project row or right click context menu)
  • 1-Click start web server and launch WebGL build in browser for selected project
  • Custom skin color themes https://github.com/unitycoder/UnityLauncherPro/wiki/Custom-themes
  • Select template for new project (template based on selected unity version)
  • And more: https://github.com/unitycoder/UnityLauncherPro/wiki/Launcher-Comparison

Forum Thread

https://forum.unity.com/threads/unity-launcher-launch-correct-unity-versions-for-each-project-automatically.488718/

Instructions

https://github.com/unitycoder/UnityLauncherPro/wiki

Development

See DEV branch for latest commits https://github.com/unitycoder/UnityLauncherPro/tree/dev
Pre-releases are sometimes available from dev branch: https://github.com/unitycoder/UnityLauncherPro/releases

Screenshots

image

image

image

image

image

Perform tasks on selected project

image

Quick New Project Creation (with Unity version and Templates selection)

image

Upgrade Project Version (automatically suggests next higher version)

image

Explorer integration (1-click opening projects with correct unity version)

image

View and Select current platform

unitylauncherpro_platform

Rename Project title

pro-rename


Old (winforms) version is here: https://github.com/unitycoder/UnityLauncher

unitylauncherpro's People

Contributors

19971025 avatar geo-at-github avatar pathightree avatar tng2903 avatar unitycoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unitylauncherpro's Issues

Custom Themes

Add support for custom themes/color palettes like in Visual Studio.

Easiest way to save these themes would be using json with this framework: Newtonsoft's Json.NET

build size report improvements

  • cannot see the total size report (which is available on editor log)
  • could add search box (to quickly search if certain file gets included in the build)
  • sort by filetype column (image, script, prefab, ...)
  • keep previous build size(s), so can compare *data is already in the editor.log (if didnt close unity, so could read multiple build reports from it, and allow displaying, comparing them)
  • aldd open explorer (context menu or double click) for each file
  • show image file resolution? (might be slow though..)
  • save build report datagrid column sizes to preferences
  • Keyboard controls for build report datagrid (Enter = Open, CTRL+C = copy path, F5 = Reload, ..)
  • BUG: cannot read buildreport if unity has locked, file
  • buttons to view previous/next build report (note: but need to refresh build reports, if new one is added after previously parsed reports, or would need to parse all reports again, everytime?)
  • show build timestamp for currently selected build report (so that user knows if this is latest) *there is no timestamp info..
  • error checking: if press get report during build, then cannot find end string for report?
  • show streamingassets data size
  • fix open build report item (since now uses array, old path doesn't work anymore)
  • parse project path for each build report (otherwise cannot open file there)
  • handle this log message "Information on used Assets is not available, since player data was not rebuilt. Do a clean build to view the Asset build report information."
  • iterate streaming assets files and add into main report? (but then need to recalculate % values for all..)
  • handle log files with timestamps? (if they appear here when enabled) *not affected
  • show build elapsed time
  • streaming assets folder size can be only displayed for latest build report (because older reports might have different files there) *or calculate from total build size, unless there are other hidden data that might be added to it?

Build Report (summary)
Uncompressed usage by category (Percentages based on user generated assets only):
Textures 653.5 mb 94.4%
Meshes 0.0 kb 0.0%
Animations 4.6 kb 0.0%
Sounds 5.7 mb 0.8%
Shaders 16.3 kb 0.0%
Other Assets 6.2 mb 0.9%
Levels 153.0 kb 0.0%
Scripts 3.3 mb 0.5%
Included DLLs 23.2 mb 3.4%
File headers 216.8 kb 0.0%
Total User Assets 692.3 mb 100.0%
Complete build size 737.6 mb

Project Properties window

i'm thinking about adding Properties.. context menu:
image

that would open separate proper properties window,
where you could manage things related to that project:

  • Secret Project *if you dont want to show this project in the list (during streaming, screen shots etc), this could hide the project, or maybe just scramble the name and path
  • Clear Library Folder
  • Shows more project info and details Size in disk, Current platform...
  • command line arguments editor (select args from ready list?)
  • see list of packages and assets in the project
  • project thumbnail (app icon, or manually selected image)
  • project tags (so that can search by tag: like "work", "game", "vr")
  • quick view of files and folders in the project (with search would be nice, if you are looking specific project that contained something)

new project: display available platforms and set platform

for new quick project dialog:

  • display platforms in the unity list (new column to datagrid)
  • add combobox to select platform (take values from currently selected unity)
  • close combobox with esc key (reset to previously selected value)
  • make win64 default platform for the first time
  • add shortcut keys to: Rename, Change platform, Select template (maybe F2, F3, F4)
  • save selected platform for next time (although, maybe need to have settings combobox to set default new project platform?)
  • pass selected combobox platform into project data, or pass when launching project?

image

replace script templates for unity installations

each unity installation comes with default script templates,
https://support.unity.com/hc/en-us/articles/210223733-How-to-customize-Unity-script-templates

would be nice to have option to replace those templates with your own (from defined input folder).
personally i'd add there Editor script template, maybe some shader templates too.. and remove those comments from default scripts.

should be easy to do:

  • settings tab: add checkbox [ ] replace templates, add textbox for input template folder (this could support url later?)
  • when unity editors are scanned, it checks if need to replace templates and copies (how to detect version/already copied)
  • no option to revert changes though.. unless take backups.. ask user to take backups in tooltip..

Track time spend in projects

When project is launched, record starting time,
when unity process ends, record ending time.

then can save that data into some statistics folder..
(although not accurate if you just leave unity running, but still)

view latest build report stats

  • read latest report from editor.log
  • show stats in some form (text as a first version)
  • separate tab (that autorefreshes if enabled) or separate window that opens from Tools button?

project list: platform display and selection

like in hub, you can open project in another platform
(and also should be able to see whats the current platform, in hub you cannot easily)

Things ToDo:

  • get current platform for the project
  • get list of installed platforms for that specific unity version (this is available in unity.Platforms already)
  • display those installed platforms in the dropdown menu (Platform column)
  • set current platform as selected in the dropdown menu
  • user can select another platform from dropdown menu
  • make dictionary of all platform names (to match commandline buildtarget params)
  • cleanup combobox style template and colors
  • when project is launched, set -buildTarget ...... based on the selected dropdown item
  • set theme colors for combobox, so can customize it
  • Need to refresh project platform at some point (otherwise shows old platform, if had changed it in the editor)
  • Manual Refresh loses started Process reference, need to keep it for Process.Exited() event

image

add button for create empty project with this unity version

to quickly create new project, without opening hub. (or context menu)

requires

  • setting field for base project folder (under which it creates new folder using unity version as a project name, with counter if already exits. Example: "2020b")
  • creates folder, launches selected unity into that

App Crash

image
see pic above ,Line 497 of "Tools.cs " have some unexpect array item.
and I've found bug,cause you just replace "(64-bit)"
image

一些建议

一些建议:
1.标记指定工程为:喜欢,以便收藏这个工程。
2.根据用户开启工程频度来判定星级。星级范围:0~5.
3.创建支持折叠和展开的分组。
4.工程列表子项支持拖曳,便于指定分组。

some advises:

  1. Mark the designated project as: Like, in order to collect this project.
  2. Judging the star rating based on the frequency with which the user opens the project. Star range: 0 ~ 5.
  3. Create groups that support folding and unfolding.
  4. The project list sub-item supports drag and drop, which is convenient for specifying grouping.

The functional suggestions I gave seem to be found in any music player.

save more than 40 recent projects

some ideas what needs to be done:

  • Take unity recent projects from registry (like it does already)
  • Load your existing own dictionary or list, of all recent projects (up to 100-200, depending if it starts to get too slow)
  • Merge unity registry and full list, can do that because project path is unique, so can check duplicates
  • Sort list by date before adding as source (or enable datagrid modified column sort as default)
  • Display full merged list (or unity 40 list), depending on your setting
  • Add settings checkbox: show only unity registry projects or keep x amount of projects history
  • trim list to max length (after sorting by date)
  • add new items to preferences list, but when? on datagrid refresh, if added project, or on exit? (and need to filter duplicates)
  • duplicate project: backslashes vs forward slashes
  • handle moved folders (remove from custom history?, but then if want to have show missing projects..) *they get filtered out most of the time, because on sorting, null modified dates go to last (before trimming project list)
  • enabled setting only takes effect after restart app?
  • bug: missing project displays target platform, even though it hasn't any, and if search, it doesn't display platform *it was sorting issue?
  • needs option to remove single items from list, since now some random project might end up on the list (of 1000 projects), even if its never used again.. (restore old "delete project from list" context menu? it deletes item from registry OR from custom list.. i think it works now, since projects are sorted) *Unity Hub moves next registry items to removed project items places, and then leaves only 0-38 items on the registry list, but they are not sorted.
  • handle situation: project is in both registry and custom list, should remove from custom list then? *i think this is already in, at GetProjects.scan()
  • handle situation: if have enabled show missing projects? might get lots of them, if have 1000 projects in history.. *can remove projects from context menu

Extras later:

  • multi-threading might be needed to scan project properties
  • window where user can remove projects from that custom full list (or clear preferences list button)
  • Checkbox/Combobox to select which types of projects to display (Hobby, Work, Prototypes? This could be useful to quickly filter out all quick projects (based on folder path))
  • OR, user could tag/favorite some projects, that then get added to custom list (always available, even if not listed in registry)
  • listbox in settings, to insert unity project root paths (so all folders get scanned and added from those folders, always)
  • option to AutoRemove projects after x days?, save lastopened.txt in non-git folder, cannot use last modified date to remove, or can we?
  • need to see where this project is coming from (from unity registry or from custom list), otherwise feels strange to see different list and order in hub

old text
current limitation comes from unity, they only save 40 recent project items into registry.

Computer\HKEY_CURRENT_USER\Software\Unity Technologies\Unity Editor 5.x
RecentlyUsedProjectPaths-0 to RecentlyUsedProjectPaths-39

could save them to separate dictionary, project path as index key?
but will there be issues merging unity registry recent items, with custom saved list ?
(since there will be duplicates, deleted projects, and need to sort by date also)

or manually save into unity registry, with new added item numbers?
(but does it mean if you open new project, you need to modify 40+ reg keys to append item as first?)

wrong last modified date

seems to check Assembly-CSharp-Editor.csproj before the other file, but Assembly-CSharp.csproj is more correct:
image

make Hub think that Unity was installed with Hub

otherwise you cannot install modules, if you installed Unity outside official Hub,
and now they removed install module direct download link from editor build settings window too..

need to do this setting:
https://forum.unity.com/threads/hub-option-add-modules-disappeard.935219/#post-6118490

image
image

  • add option toggle for "make hub think that unity was installed from hub" or something
  • read file %APPDATA%\UnityHub\editors.json
  • replace "manual": true, with "manual": false, and save back

arrange settings into separate categories

todo

  • arrange to groups
  • how to fit more settings? (its already full..) *make root folders much smaller! usually only few lines max there

currently all settings are in one list:
image

could have separate categories:
image

quick project: select custom template for new project

could import your own unitypackage into project when its created.
(for example to create required folders, Scripts/ Scenes/ or other stuff that you commonly use)

new todo

  • custom init script that is copied to project and does what users wants
  • settings field for init script and toggle to have it enabled for new projects
  • add template init script in wiki or separate repo (creates folders for empty project etc)
  • launch new project and call init script

ideas for later

  • dropdown menu in New Project window, to select which of your Init scripts to use (mobile, vr, webgl, gamejam...)
  • check that script contains valid method for: -executeMethod UnityLauncherProTools.InitializeProject.Init()

Skipped (cannot import empty packages with unitypackage)
TODO (to allow selecting custom startup unitypackage on project creation)

  • settings tab: textbox for your unitypackages folder (contains your templates)
  • settings tab: browse for templates folder
  • settings: remember your last selected package in NewProject window (it defaults to "None" at first run)
  • if package missing, display red outline in listbox, and/or just select "None"
  • add commandline option -importpackage, if user had selected some package for import
  • save settings to prefs (settings, selected folder path)
  • load settings from prefs (settings, selected folder path)
  • Blocker: How to make unitypackage that contains empty folders? *https://forum.unity.com/threads/import-empty-folders-from-unitypackage.1247293/
  • if cannot import package, then need to unzip custom folder structure, or your files into project (but unitypackage would be better, since it can hold unity related data..)

Notes2:

  • making your own gzip file inside unity editor templates folder would work also (later could allow template listings from another shared folder), but then might require admin access to copy files into templates folder..

parse unity version hash code (changeset) from data files

this file contains hash code
Editor\Data\PlaybackEngines\windowsstandalonesupport\Source\WindowsPlayer\WindowsPlayer\UnityConfigureRevision.gen.h

this hash can be then used for downloading more platforms (without starting unity and going into build settings), with direct links like:
http://beta.unity3d.com/download/7e2ed8c1221a/TargetSupportInstaller/UnitySetup-Universal-Windows-Platform-Support-for-Editor-2020.1.0b4.exe
http://beta.unity3d.com/download/7e2ed8c1221a/TargetSupportInstaller/UnitySetup-WebGL-Support-for-Editor-2020.1.0b4.exe

  • its also available per project, at: ProjectSettings/ProjectVersion.txt
  • visible on unity.exe productVersion

todo

  • parse code only when needed (not at start)
  • add option to download platform installer for selected unity version, but how/where?
  • build download link from hash, unity version, selected platform installer

add options field for logcat parameters

current command is:
adb logcat -s Unity ActivityManager PackageManager dalvikvm DEBUG -v color

but sometimes might want to modify it.

  • add options textbox for the command
  • add reset to default button (if messed it up)

extras: optional sdk download resource list

would need list of tools/packages/resources download links list (like android sdk/jdk/ndk),
list should be some easy-to-fetch over web (without updating launcher).

this is to save time from searching correct packages/downloads.

tools button: install apk to device

then no need to do build'n'run again to install into device
(if previous build n run install failed due to usb debugging options or others)

actually this cannot be Tools tab button? since apk depends on the project.. then it needs to be context menu

Change Name of Unitys Tab

It should be renamed to Editors or Editor Installations, because Unitys does not sound right at all.

Dictionary warning

in unity tab:

  • set preferred version
  • click new project button
  • cancel
  • set preferred version
  • click new project button
  • warning:

System.Windows.Data Warning: 54 : Collection of type 'System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' has been changed without raising a CollectionChanged event. Support for this is incomplete and inconsistent, and will be removed completely in a future version of WPF. Consider either (a) implementing INotifyCollectionChanged, or (b) avoiding changes to this type of collection.

*happens in line
gridAvailableVersions.ItemsSource = MainWindow.unityInstalledVersions;

references
https://stackoverflow.com/a/22162612/5452781

allow selecting unity builtin templates

each editor has template files in:
Editor\Data\Resources\PackageManager\ProjectTemplates\

  • read list of those template files for selected unity editor
  • add dropdown option to select template from those found items
  • unzip into new project that you are creating
  • update templates list when unity version selection changes
  • fix keyboard handling for new project window (now with combobox)

image

new project: add option to override default packages

empty new project contains too many useless packages,
and its slow to remove them from Package manager one by one:
image

TODO,
new project window

  • checkbox to allow [ ] use minimal packages? (just visual studio?)
  • or, separate packages list popup where you can select and toggle packages? (and it remembers those selections next time)
  • how to handle separate unity versions, have different packages..

OR,

  • option to replace and edit default packages PER unity installation... this might actually easier / better. (*But requires admin access to modify installation directory files)

OR2,

  • Global package "blacklist", with button to "remove blacklisted default packages from all installations" ?

OR3,

  • when creating new project, you select your own template (but requires you to first create own template.. maybe that needs simple template editor then.. but problem with unity version changes.. packages will change)

looks like the default manifest is at:
Editor\Data\Resources\PackageManager\Editor\manifest.json
and it allows setting if package is default?
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.