Merge pull request #61 from thomas-stockx/feature/new_examples
New example with Flutter <-> Unity communcation & iOS fixes
This commit is contained in:
commit
8bdf900354
109
README.md
109
README.md
|
@ -208,68 +208,95 @@ class _UnityDemoScreenState extends State<UnityDemoScreen>{
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:flutter_unity_widget/flutter_unity_widget.dart';
|
import 'package:flutter_unity_widget/flutter_unity_widget.dart';
|
||||||
|
|
||||||
class UnityDemoScreen extends StatefulWidget {
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
UnityDemoScreen({Key key}) : super(key: key);
|
|
||||||
|
|
||||||
|
class MyApp extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
_UnityDemoScreenState createState() => _UnityDemoScreenState();
|
_MyAppState createState() => _MyAppState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _UnityDemoScreenState extends State<UnityDemoScreen>{
|
class _MyAppState extends State<MyApp> {
|
||||||
static final GlobalKey<ScaffoldState> _scaffoldKey =
|
static final GlobalKey<ScaffoldState> _scaffoldKey =
|
||||||
GlobalKey<ScaffoldState>();
|
GlobalKey<ScaffoldState>();
|
||||||
UnityWidgetController _unityWidgetController;
|
UnityWidgetController _unityWidgetController;
|
||||||
bool paused = false;
|
double _sliderValue = 0.0;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
return MaterialApp(
|
||||||
return Scaffold(
|
home: Scaffold(
|
||||||
key: _scaffoldKey,
|
|
||||||
body: Scaffold(
|
|
||||||
key: _scaffoldKey,
|
key: _scaffoldKey,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Unity Flutter Demo'),
|
title: const Text('Unity Flutter Demo'),
|
||||||
),
|
),
|
||||||
body: Container(
|
body: Card(
|
||||||
child: Stack(
|
margin: const EdgeInsets.all(8),
|
||||||
children: <Widget>[
|
clipBehavior: Clip.antiAlias,
|
||||||
UnityWidget(
|
shape: RoundedRectangleBorder(
|
||||||
onUnityViewCreated: onUnityCreated,
|
borderRadius: BorderRadius.circular(20.0),
|
||||||
),
|
),
|
||||||
Positioned(
|
child: Stack(
|
||||||
bottom: 40.0,
|
children: <Widget>[
|
||||||
left: 80.0,
|
UnityWidget(
|
||||||
right: 80.0,
|
onUnityViewCreated: onUnityCreated,
|
||||||
child: MaterialButton(
|
isARScene: false,
|
||||||
onPressed: () {
|
onUnityMessage: onUnityMessage,
|
||||||
|
|
||||||
if(paused) {
|
|
||||||
_unityWidgetController.resume();
|
|
||||||
setState(() {
|
|
||||||
paused = false;
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
_unityWidgetController.pause();
|
|
||||||
setState(() {
|
|
||||||
paused = true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
color: Colors.blue[500],
|
|
||||||
child: Text(paused ? 'Start Game' : 'Pause Game'),
|
|
||||||
),
|
),
|
||||||
),
|
Positioned(
|
||||||
],
|
bottom: 20,
|
||||||
)),
|
left: 20,
|
||||||
|
right: 20,
|
||||||
|
child: Card(
|
||||||
|
elevation: 10,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 20),
|
||||||
|
child: Text("Rotation speed:"),
|
||||||
|
),
|
||||||
|
Slider(
|
||||||
|
onChanged: (value) {
|
||||||
|
setState(() {
|
||||||
|
_sliderValue = value;
|
||||||
|
});
|
||||||
|
setRotationSpeed(value.toString());
|
||||||
|
},
|
||||||
|
value: _sliderValue,
|
||||||
|
min: 0,
|
||||||
|
max: 20,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Communcation from Flutter to Unity
|
||||||
|
void setRotationSpeed(String speed) {
|
||||||
|
_unityWidgetController.postMessage(
|
||||||
|
'Cube',
|
||||||
|
'SetRotationSpeed',
|
||||||
|
speed,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Communication from Unity to Flutter
|
||||||
|
void onUnityMessage(controller, message) {
|
||||||
|
print('Received message from unity: ${message.toString()}');
|
||||||
|
}
|
||||||
|
|
||||||
// Callback that connects the created controller to the unity controller
|
// Callback that connects the created controller to the unity controller
|
||||||
void onUnityCreated(controller) {
|
void onUnityCreated(controller) {
|
||||||
this._unityWidgetController = controller;
|
this._unityWidgetController = controller;
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
build/
|
build/
|
||||||
|
|
||||||
android/UnityExport/
|
android/UnityExport/
|
||||||
|
ios/UnityExport/
|
||||||
|
unity/DemoApp/.vs
|
||||||
|
|
||||||
#example/
|
#example/
|
||||||
example/unity/DemoApp/Builds/
|
example/unity/DemoApp/Builds/
|
||||||
|
@ -44,6 +46,8 @@ example/unity/DemoApp/Temp/
|
||||||
**/android/gradlew.bat
|
**/android/gradlew.bat
|
||||||
**/android/local.properties
|
**/android/local.properties
|
||||||
**/android/**/GeneratedPluginRegistrant.java
|
**/android/**/GeneratedPluginRegistrant.java
|
||||||
|
**/android/key.properties
|
||||||
|
*.jks
|
||||||
|
|
||||||
# iOS/XCode related
|
# iOS/XCode related
|
||||||
**/ios/**/*.mode1v3
|
**/ios/**/*.mode1v3
|
||||||
|
@ -68,9 +72,13 @@ example/unity/DemoApp/Temp/
|
||||||
**/ios/Flutter/app.flx
|
**/ios/Flutter/app.flx
|
||||||
**/ios/Flutter/app.zip
|
**/ios/Flutter/app.zip
|
||||||
**/ios/Flutter/flutter_assets/
|
**/ios/Flutter/flutter_assets/
|
||||||
|
**/ios/Flutter/flutter_export_environment.sh
|
||||||
**/ios/ServiceDefinitions.json
|
**/ios/ServiceDefinitions.json
|
||||||
**/ios/Runner/GeneratedPluginRegistrant.*
|
**/ios/Runner/GeneratedPluginRegistrant.*
|
||||||
|
|
||||||
|
# Coverage
|
||||||
|
coverage/
|
||||||
|
|
||||||
# Exceptions to above rules.
|
# Exceptions to above rules.
|
||||||
!**/ios/**/default.mode1v3
|
!**/ios/**/default.mode1v3
|
||||||
!**/ios/**/default.mode2v3
|
!**/ios/**/default.mode2v3
|
||||||
|
|
|
@ -2,15 +2,21 @@
|
||||||
|
|
||||||
Demonstrates how to use the flutter_unity_widget plugin.
|
Demonstrates how to use the flutter_unity_widget plugin.
|
||||||
|
|
||||||
## Getting Started
|
## Run the sample on Android
|
||||||
|
|
||||||
This project is a starting point for a Flutter application.
|
1. Open the `unity` project and build it: Menu -> Flutter -> Export Android
|
||||||
|
2. Copy `android/UnityExport/libs/unity-classes.jar` to `android/unity-classes/unity-classes.jar` and overwrite the existing file. You only need to do this each time you use a different Unity version.
|
||||||
|
3. `flutter run`
|
||||||
|
|
||||||
A few resources to get you started if this is your first Flutter project:
|
## Run the sample on iOS
|
||||||
|
1. Open the `unity` project and build it: Menu -> Flutter -> Export iOS
|
||||||
- [Lab: Write your first Flutter app](https://flutter.io/docs/get-started/codelab)
|
|
||||||
- [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook)
|
Be sure you use at least Unity version 2019.3 or up.
|
||||||
|
|
||||||
For help getting started with Flutter, view our
|
2. open ios/Runner.xcworkspace (workspace!, not the project) in Xcode and add the exported project in the workspace root (with a right click in the Navigator, not on an item -> Add Files to "Runner" -> add the UnityExport/Unity-Iphone.xcodeproj file
|
||||||
[online documentation](https://flutter.io/docs), which offers tutorials,
|
<img src="../workspace.png" width="400" />
|
||||||
samples, guidance on mobile development, and a full API reference.
|
|
||||||
|
3. Select the Unity-iPhone/Data folder and change the Target Membership for Data folder to UnityFramework
|
||||||
|
<img src="../change_target_membership_data_folder.png" width="400" />
|
||||||
|
|
||||||
|
4. `flutter run`
|
||||||
|
|
|
@ -25,7 +25,7 @@ apply plugin: 'com.android.application'
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 27
|
compileSdkVersion 28
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
disable 'InvalidPackage'
|
disable 'InvalidPackage'
|
||||||
|
@ -34,8 +34,8 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
applicationId "com.rexraphael.flutterunitywidgetexample"
|
applicationId "com.rexraphael.flutterunitywidgetexample"
|
||||||
minSdkVersion 16
|
minSdkVersion 19
|
||||||
targetSdkVersion 27
|
targetSdkVersion 28
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
versionName flutterVersionName
|
versionName flutterVersionName
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
org.gradle.jvmargs=-Xmx1536M
|
org.gradle.jvmargs=-Xmx1536M
|
||||||
|
android.enableR8=true
|
||||||
|
|
Binary file not shown.
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||||
|
3595962B23575428001EA3CF /* UnityFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3595962823575079001EA3CF /* UnityFramework.framework */; };
|
||||||
|
3595962C23575428001EA3CF /* UnityFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3595962823575079001EA3CF /* UnityFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||||
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
|
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
|
||||||
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
|
@ -30,6 +32,7 @@
|
||||||
files = (
|
files = (
|
||||||
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
|
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
|
||||||
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
|
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
|
||||||
|
3595962C23575428001EA3CF /* UnityFramework.framework in Embed Frameworks */,
|
||||||
);
|
);
|
||||||
name = "Embed Frameworks";
|
name = "Embed Frameworks";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -39,6 +42,7 @@
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||||
|
3595962823575079001EA3CF /* UnityFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UnityFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||||
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
|
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
|
||||||
5620DF288C51424FA6A1FF33 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
5620DF288C51424FA6A1FF33 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
@ -66,6 +70,7 @@
|
||||||
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
|
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
|
||||||
3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
|
3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
|
||||||
5F1F17FE81D542008A531ACA /* Pods_Runner.framework in Frameworks */,
|
5F1F17FE81D542008A531ACA /* Pods_Runner.framework in Frameworks */,
|
||||||
|
3595962B23575428001EA3CF /* UnityFramework.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -75,6 +80,7 @@
|
||||||
1944B714B8EB58E1422F85BA /* Frameworks */ = {
|
1944B714B8EB58E1422F85BA /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
3595962823575079001EA3CF /* UnityFramework.framework */,
|
||||||
5620DF288C51424FA6A1FF33 /* Pods_Runner.framework */,
|
5620DF288C51424FA6A1FF33 /* Pods_Runner.framework */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
|
@ -87,7 +93,6 @@
|
||||||
AE2B2FAD9E6F467609AF130E /* Pods-Runner.release.xcconfig */,
|
AE2B2FAD9E6F467609AF130E /* Pods-Runner.release.xcconfig */,
|
||||||
BBFDA20C1C79A585B3EBC21F /* Pods-Runner.profile.xcconfig */,
|
BBFDA20C1C79A585B3EBC21F /* Pods-Runner.profile.xcconfig */,
|
||||||
);
|
);
|
||||||
name = Pods;
|
|
||||||
path = Pods;
|
path = Pods;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
@ -191,6 +196,7 @@
|
||||||
developmentRegion = English;
|
developmentRegion = English;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
|
English,
|
||||||
en,
|
en,
|
||||||
Base,
|
Base,
|
||||||
);
|
);
|
||||||
|
@ -239,16 +245,12 @@
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
|
||||||
"${PODS_ROOT}/../.symlinks/flutter/ios-release/Flutter.framework",
|
"${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/flutter_unity_widget/flutter_unity_widget.framework",
|
"${BUILT_PRODUCTS_DIR}/flutter_unity_widget/flutter_unity_widget.framework",
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_unity_widget.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_unity_widget.framework",
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Workspace
|
<Workspace
|
||||||
version = "1.0">
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "group:UnityExport/Unity-iPhone.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
<FileRef
|
<FileRef
|
||||||
location = "group:Runner.xcodeproj">
|
location = "group:Runner.xcodeproj">
|
||||||
</FileRef>
|
</FileRef>
|
||||||
|
|
|
@ -7,6 +7,7 @@ import Flutter
|
||||||
_ application: UIApplication,
|
_ application: UIApplication,
|
||||||
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
|
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
|
||||||
) -> Bool {
|
) -> Bool {
|
||||||
|
InitArgs(CommandLine.argc, CommandLine.unsafeArgv)
|
||||||
GeneratedPluginRegistrant.register(with: self)
|
GeneratedPluginRegistrant.register(with: self)
|
||||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,8 @@
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
</array>
|
</array>
|
||||||
|
<key>io.flutter.embedded_views_preview</key>
|
||||||
|
<true/>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
<false/>
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
#import "GeneratedPluginRegistrant.h"
|
#import "GeneratedPluginRegistrant.h"
|
||||||
|
#import "UnityUtils.h"
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter_unity_widget/flutter_unity_widget.dart';
|
import 'package:flutter_unity_widget/flutter_unity_widget.dart';
|
||||||
|
|
||||||
void main() => runApp(MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
@ -13,7 +12,7 @@ class _MyAppState extends State<MyApp> {
|
||||||
static final GlobalKey<ScaffoldState> _scaffoldKey =
|
static final GlobalKey<ScaffoldState> _scaffoldKey =
|
||||||
GlobalKey<ScaffoldState>();
|
GlobalKey<ScaffoldState>();
|
||||||
UnityWidgetController _unityWidgetController;
|
UnityWidgetController _unityWidgetController;
|
||||||
bool paused = false;
|
double _sliderValue = 0.0;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
@ -28,41 +27,65 @@ class _MyAppState extends State<MyApp> {
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Unity Flutter Demo'),
|
title: const Text('Unity Flutter Demo'),
|
||||||
),
|
),
|
||||||
body: Container(
|
body: Card(
|
||||||
child: Stack(
|
margin: const EdgeInsets.all(8),
|
||||||
children: <Widget>[
|
clipBehavior: Clip.antiAlias,
|
||||||
UnityWidget(
|
shape: RoundedRectangleBorder(
|
||||||
onUnityViewCreated: onUnityCreated,
|
borderRadius: BorderRadius.circular(20.0),
|
||||||
),
|
),
|
||||||
Positioned(
|
child: Stack(
|
||||||
bottom: 40.0,
|
children: <Widget>[
|
||||||
left: 80.0,
|
UnityWidget(
|
||||||
right: 80.0,
|
onUnityViewCreated: onUnityCreated,
|
||||||
child: MaterialButton(
|
isARScene: false,
|
||||||
onPressed: () {
|
onUnityMessage: onUnityMessage,
|
||||||
|
|
||||||
if(paused) {
|
|
||||||
_unityWidgetController.resume();
|
|
||||||
setState(() {
|
|
||||||
paused = false;
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
_unityWidgetController.pause();
|
|
||||||
setState(() {
|
|
||||||
paused = true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
color: Colors.blue[500],
|
|
||||||
child: Text(paused ? 'Start Game' : 'Pause Game'),
|
|
||||||
),
|
),
|
||||||
),
|
Positioned(
|
||||||
],
|
bottom: 20,
|
||||||
)),
|
left: 20,
|
||||||
|
right: 20,
|
||||||
|
child: Card(
|
||||||
|
elevation: 10,
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 20),
|
||||||
|
child: Text("Rotation speed:"),
|
||||||
|
),
|
||||||
|
Slider(
|
||||||
|
onChanged: (value) {
|
||||||
|
setState(() {
|
||||||
|
_sliderValue = value;
|
||||||
|
});
|
||||||
|
setRotationSpeed(value.toString());
|
||||||
|
},
|
||||||
|
value: _sliderValue,
|
||||||
|
min: 0,
|
||||||
|
max: 20,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setRotationSpeed(String speed) {
|
||||||
|
_unityWidgetController.postMessage(
|
||||||
|
'Cube',
|
||||||
|
'SetRotationSpeed',
|
||||||
|
speed,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onUnityMessage(controller, message) {
|
||||||
|
print('Received message from unity: ${message.toString()}');
|
||||||
|
}
|
||||||
|
|
||||||
// Callback that connects the created controller to the unity controller
|
// Callback that connects the created controller to the unity controller
|
||||||
void onUnityCreated(controller) {
|
void onUnityCreated(controller) {
|
||||||
this._unityWidgetController = controller;
|
this._unityWidgetController = controller;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -122,9 +122,41 @@ public static class XcodePostBuild
|
||||||
{
|
{
|
||||||
var inScope = false;
|
var inScope = false;
|
||||||
var markerDetected = false;
|
var markerDetected = false;
|
||||||
|
|
||||||
// Add static GetAppController
|
// Modify inline GetAppController
|
||||||
EditCodeFile(path, line =>
|
EditCodeFile(path, line =>
|
||||||
|
{
|
||||||
|
inScope |= line.Contains("include \"RenderPluginDelegate.h\"");
|
||||||
|
|
||||||
|
if (inScope && !markerDetected)
|
||||||
|
{
|
||||||
|
if (line.Trim() == "")
|
||||||
|
{
|
||||||
|
inScope = false;
|
||||||
|
markerDetected = true;
|
||||||
|
|
||||||
|
return new string[]
|
||||||
|
{
|
||||||
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"@protocol UnityEventListener <NSObject>",
|
||||||
|
"- (void)onMessage:(NSString *)message;",
|
||||||
|
"@end",
|
||||||
|
"",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return new string[] { line };
|
||||||
|
}
|
||||||
|
|
||||||
|
return new string[] { line };
|
||||||
|
});
|
||||||
|
|
||||||
|
inScope = false;
|
||||||
|
markerDetected = false;
|
||||||
|
|
||||||
|
// Add static GetAppController
|
||||||
|
EditCodeFile(path, line =>
|
||||||
{
|
{
|
||||||
inScope |= line.Contains("- (void)startUnity:");
|
inScope |= line.Contains("- (void)startUnity:");
|
||||||
|
|
||||||
|
@ -139,7 +171,9 @@ public static class XcodePostBuild
|
||||||
"",
|
"",
|
||||||
"// Added by " + TouchedMarker,
|
"// Added by " + TouchedMarker,
|
||||||
"+ (UnityAppController*)GetAppController;",
|
"+ (UnityAppController*)GetAppController;",
|
||||||
""
|
"+ (void)addUnityEventListenerInternal:(id<UnityEventListener>)listener;",
|
||||||
|
"+ (void)removeUnityEventListenerInternal:(id<UnityEventListener>)listener;",
|
||||||
|
""
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,10 +200,23 @@ public static class XcodePostBuild
|
||||||
{
|
{
|
||||||
"// }",
|
"// }",
|
||||||
"",
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
"static inline UnityAppController* GetAppController()",
|
"static inline UnityAppController* GetAppController()",
|
||||||
"{",
|
"{",
|
||||||
" return [UnityAppController GetAppController];",
|
" return [UnityAppController GetAppController];",
|
||||||
"}",
|
"}",
|
||||||
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"static inline void addUnityEventListenerInternal(id<UnityEventListener> listener)",
|
||||||
|
"{",
|
||||||
|
" [UnityAppController addUnityEventListenerInternal: listener];",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"static inline void removeUnityEventListenerInternal(id<UnityEventListener> listener)",
|
||||||
|
"{",
|
||||||
|
" [UnityAppController removeUnityEventListenerInternal:listener];",
|
||||||
|
"}"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -209,7 +256,26 @@ public static class XcodePostBuild
|
||||||
" return unityAppController;",
|
" return unityAppController;",
|
||||||
"}",
|
"}",
|
||||||
"",
|
"",
|
||||||
line,
|
"// Added by " + TouchedMarker,
|
||||||
|
"static NSHashTable* mUnityEventListeners = [NSHashTable weakObjectsHashTable];",
|
||||||
|
"+ (void)addUnityEventListener2:(id<UnityEventListener>)listener",
|
||||||
|
"{",
|
||||||
|
" [mUnityEventListeners addObject: listener];",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"+(void)removeUnityEventListener2:(id<UnityEventListener>)listener",
|
||||||
|
"{",
|
||||||
|
" [mUnityEventListeners removeObject: listener];",
|
||||||
|
"}",
|
||||||
|
line,
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"extern \"C\" void onUnityMessage(const char* message)",
|
||||||
|
"{",
|
||||||
|
" for (id<UnityEventListener> listener in mUnityEventListeners) {",
|
||||||
|
" [listener onMessage:[NSString stringWithUTF8String:message]];",
|
||||||
|
" }",
|
||||||
|
"}",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 76f828f47ce26cc43991113c6a39dbbf
|
|
||||||
folderAsset: yes
|
|
||||||
timeCreated: 1466010535
|
|
||||||
licenseType: Store
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,8 +1,8 @@
|
||||||
using System.Collections;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
|
||||||
public class Rotate : MonoBehaviour
|
public class Rotate : MonoBehaviour, IEventSystemHandler
|
||||||
{
|
{
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
Vector3 RotateAmount;
|
Vector3 RotateAmount;
|
||||||
|
@ -10,12 +10,35 @@ public class Rotate : MonoBehaviour
|
||||||
// Start is called before the first frame update
|
// Start is called before the first frame update
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
RotateAmount = new Vector3(10, 10, 10);
|
RotateAmount = new Vector3(0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
// Update is called once per frame
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
gameObject.transform.Rotate(RotateAmount * Time.deltaTime * 10);
|
gameObject.transform.Rotate(RotateAmount * Time.deltaTime * 10);
|
||||||
|
|
||||||
|
for (int i = 0; i < Input.touchCount; ++i)
|
||||||
|
{
|
||||||
|
if (Input.GetTouch(i).phase.Equals(TouchPhase.Began))
|
||||||
|
{
|
||||||
|
var hit = new RaycastHit();
|
||||||
|
|
||||||
|
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
|
||||||
|
|
||||||
|
if (Physics.Raycast(ray, out hit))
|
||||||
|
{
|
||||||
|
// This method is used to send data to Flutter
|
||||||
|
UnityMessageManager.Instance.SendMessageToFlutter("The cube feels touched.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method is called from Flutter
|
||||||
|
public void SetRotationSpeed(String message)
|
||||||
|
{
|
||||||
|
float value = float.Parse(message);
|
||||||
|
RotateAmount = new Vector3(value, value, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio for Mac
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{8454A3E8-CD6F-E229-B101-0AFF15D18447}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor", "Assembly-CSharp-Editor.csproj", "{FC6EB947-28DE-8385-8FAC-5C1621986B03}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{8454A3E8-CD6F-E229-B101-0AFF15D18447}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8454A3E8-CD6F-E229-B101-0AFF15D18447}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8454A3E8-CD6F-E229-B101-0AFF15D18447}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{8454A3E8-CD6F-E229-B101-0AFF15D18447}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{FC6EB947-28DE-8385-8FAC-5C1621986B03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{FC6EB947-28DE-8385-8FAC-5C1621986B03}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{FC6EB947-28DE-8385-8FAC-5C1621986B03}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{FC6EB947-28DE-8385-8FAC-5C1621986B03}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -1,12 +1,21 @@
|
||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"com.unity.2d.sprite": "1.0.0",
|
||||||
|
"com.unity.2d.tilemap": "1.0.0",
|
||||||
"com.unity.ads": "2.0.8",
|
"com.unity.ads": "2.0.8",
|
||||||
"com.unity.analytics": "3.2.2",
|
"com.unity.analytics": "3.3.2",
|
||||||
"com.unity.collab-proxy": "1.2.15",
|
"com.unity.collab-proxy": "1.2.16",
|
||||||
"com.unity.package-manager-ui": "2.0.7",
|
"com.unity.ide.rider": "1.1.0",
|
||||||
"com.unity.purchasing": "2.0.3",
|
"com.unity.ide.vscode": "1.1.2",
|
||||||
"com.unity.textmeshpro": "1.3.0",
|
"com.unity.multiplayer-hlapi": "1.0.4",
|
||||||
|
"com.unity.purchasing": "2.0.6",
|
||||||
|
"com.unity.test-framework": "1.1.2",
|
||||||
|
"com.unity.textmeshpro": "2.0.1",
|
||||||
|
"com.unity.timeline": "1.2.2",
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.xr.legacyinputhelpers": "1.3.7",
|
||||||
"com.unity.modules.ai": "1.0.0",
|
"com.unity.modules.ai": "1.0.0",
|
||||||
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
"com.unity.modules.animation": "1.0.0",
|
"com.unity.modules.animation": "1.0.0",
|
||||||
"com.unity.modules.assetbundle": "1.0.0",
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
"com.unity.modules.audio": "1.0.0",
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
--- !u!30 &1
|
--- !u!30 &1
|
||||||
GraphicsSettings:
|
GraphicsSettings:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
serializedVersion: 12
|
serializedVersion: 13
|
||||||
m_Deferred:
|
m_Deferred:
|
||||||
m_Mode: 1
|
m_Mode: 1
|
||||||
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
|
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
@ -38,7 +38,7 @@ GraphicsSettings:
|
||||||
- {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
|
- {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
- {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
|
- {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
- {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
|
- {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
- {fileID: 16002, guid: 0000000000000000f000000000000000, type: 0}
|
- {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_PreloadedShaders: []
|
m_PreloadedShaders: []
|
||||||
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
|
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
|
||||||
type: 0}
|
type: 0}
|
||||||
|
@ -63,3 +63,5 @@ GraphicsSettings:
|
||||||
m_AlbedoSwatchInfos: []
|
m_AlbedoSwatchInfos: []
|
||||||
m_LightsUseLinearIntensity: 0
|
m_LightsUseLinearIntensity: 0
|
||||||
m_LightsUseColorTemperature: 0
|
m_LightsUseColorTemperature: 0
|
||||||
|
m_LogWhenShaderIsCompiled: 0
|
||||||
|
m_AllowEnlightenSupportForUpgradedProject: 1
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
--- !u!129 &1
|
--- !u!129 &1
|
||||||
PlayerSettings:
|
PlayerSettings:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
serializedVersion: 15
|
serializedVersion: 20
|
||||||
productGUID: e5da194b0a57a48cd8f1c3e35537f274
|
productGUID: e5da194b0a57a48cd8f1c3e35537f274
|
||||||
AndroidProfiler: 0
|
AndroidProfiler: 0
|
||||||
AndroidFilterTouchesWhenObscured: 0
|
AndroidFilterTouchesWhenObscured: 0
|
||||||
|
@ -52,8 +52,7 @@ PlayerSettings:
|
||||||
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
|
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
|
||||||
iosShowActivityIndicatorOnLoading: -1
|
iosShowActivityIndicatorOnLoading: -1
|
||||||
androidShowActivityIndicatorOnLoading: -1
|
androidShowActivityIndicatorOnLoading: -1
|
||||||
iosAppInBackgroundBehavior: 0
|
iosUseCustomAppBackgroundBehavior: 0
|
||||||
displayResolutionDialog: 1
|
|
||||||
iosAllowHTTPDownload: 1
|
iosAllowHTTPDownload: 1
|
||||||
allowedAutorotateToPortrait: 1
|
allowedAutorotateToPortrait: 1
|
||||||
allowedAutorotateToPortraitUpsideDown: 1
|
allowedAutorotateToPortraitUpsideDown: 1
|
||||||
|
@ -65,6 +64,7 @@ PlayerSettings:
|
||||||
disableDepthAndStencilBuffers: 0
|
disableDepthAndStencilBuffers: 0
|
||||||
androidStartInFullscreen: 1
|
androidStartInFullscreen: 1
|
||||||
androidRenderOutsideSafeArea: 0
|
androidRenderOutsideSafeArea: 0
|
||||||
|
androidUseSwappy: 0
|
||||||
androidBlitType: 0
|
androidBlitType: 0
|
||||||
defaultIsNativeResolution: 1
|
defaultIsNativeResolution: 1
|
||||||
macRetinaSupport: 1
|
macRetinaSupport: 1
|
||||||
|
@ -79,11 +79,11 @@ PlayerSettings:
|
||||||
usePlayerLog: 1
|
usePlayerLog: 1
|
||||||
bakeCollisionMeshes: 0
|
bakeCollisionMeshes: 0
|
||||||
forceSingleInstance: 0
|
forceSingleInstance: 0
|
||||||
|
useFlipModelSwapchain: 1
|
||||||
resizableWindow: 0
|
resizableWindow: 0
|
||||||
useMacAppStoreValidation: 0
|
useMacAppStoreValidation: 0
|
||||||
macAppStoreCategory: public.app-category.games
|
macAppStoreCategory: public.app-category.games
|
||||||
gpuSkinning: 1
|
gpuSkinning: 1
|
||||||
graphicsJobs: 0
|
|
||||||
xboxPIXTextureCapture: 0
|
xboxPIXTextureCapture: 0
|
||||||
xboxEnableAvatar: 0
|
xboxEnableAvatar: 0
|
||||||
xboxEnableKinect: 0
|
xboxEnableKinect: 0
|
||||||
|
@ -91,7 +91,6 @@ PlayerSettings:
|
||||||
xboxEnableFitness: 0
|
xboxEnableFitness: 0
|
||||||
visibleInBackground: 1
|
visibleInBackground: 1
|
||||||
allowFullscreenSwitch: 1
|
allowFullscreenSwitch: 1
|
||||||
graphicsJobMode: 0
|
|
||||||
fullscreenMode: 1
|
fullscreenMode: 1
|
||||||
xboxSpeechDB: 0
|
xboxSpeechDB: 0
|
||||||
xboxEnableHeadOrientation: 0
|
xboxEnableHeadOrientation: 0
|
||||||
|
@ -111,6 +110,7 @@ PlayerSettings:
|
||||||
switchNVNShaderPoolsGranularity: 33554432
|
switchNVNShaderPoolsGranularity: 33554432
|
||||||
switchNVNDefaultPoolsGranularity: 16777216
|
switchNVNDefaultPoolsGranularity: 16777216
|
||||||
switchNVNOtherPoolsGranularity: 16777216
|
switchNVNOtherPoolsGranularity: 16777216
|
||||||
|
vulkanNumSwapchainBuffers: 2
|
||||||
vulkanEnableSetSRGBWrite: 0
|
vulkanEnableSetSRGBWrite: 0
|
||||||
m_SupportedAspectRatios:
|
m_SupportedAspectRatios:
|
||||||
4:3: 1
|
4:3: 1
|
||||||
|
@ -125,7 +125,6 @@ PlayerSettings:
|
||||||
m_HolographicPauseOnTrackingLoss: 1
|
m_HolographicPauseOnTrackingLoss: 1
|
||||||
xboxOneDisableKinectGpuReservation: 1
|
xboxOneDisableKinectGpuReservation: 1
|
||||||
xboxOneEnable7thCore: 1
|
xboxOneEnable7thCore: 1
|
||||||
isWsaHolographicRemotingEnabled: 0
|
|
||||||
vrSettings:
|
vrSettings:
|
||||||
cardboard:
|
cardboard:
|
||||||
depthFormat: 0
|
depthFormat: 0
|
||||||
|
@ -140,13 +139,23 @@ PlayerSettings:
|
||||||
hololens:
|
hololens:
|
||||||
depthFormat: 1
|
depthFormat: 1
|
||||||
depthBufferSharingEnabled: 1
|
depthBufferSharingEnabled: 1
|
||||||
|
lumin:
|
||||||
|
depthFormat: 0
|
||||||
|
frameTiming: 2
|
||||||
|
enableGLCache: 0
|
||||||
|
glCacheMaxBlobSize: 524288
|
||||||
|
glCacheMaxFileSize: 8388608
|
||||||
oculus:
|
oculus:
|
||||||
sharedDepthBuffer: 1
|
sharedDepthBuffer: 1
|
||||||
dashSupport: 1
|
dashSupport: 1
|
||||||
|
lowOverheadMode: 0
|
||||||
|
protectedContext: 0
|
||||||
|
v2Signing: 1
|
||||||
enable360StereoCapture: 0
|
enable360StereoCapture: 0
|
||||||
protectGraphicsMemory: 0
|
isWsaHolographicRemotingEnabled: 0
|
||||||
enableFrameTimingStats: 0
|
enableFrameTimingStats: 0
|
||||||
useHDRDisplay: 0
|
useHDRDisplay: 0
|
||||||
|
D3DHDRBitDepth: 0
|
||||||
m_ColorGamuts: 00000000
|
m_ColorGamuts: 00000000
|
||||||
targetPixelDensity: 30
|
targetPixelDensity: 30
|
||||||
resolutionScalingMode: 0
|
resolutionScalingMode: 0
|
||||||
|
@ -156,7 +165,7 @@ PlayerSettings:
|
||||||
Android: com.YourCompanyName.YourProductName
|
Android: com.YourCompanyName.YourProductName
|
||||||
buildNumber: {}
|
buildNumber: {}
|
||||||
AndroidBundleVersionCode: 1
|
AndroidBundleVersionCode: 1
|
||||||
AndroidMinSdkVersion: 16
|
AndroidMinSdkVersion: 19
|
||||||
AndroidTargetSdkVersion: 0
|
AndroidTargetSdkVersion: 0
|
||||||
AndroidPreferredInstallLocation: 1
|
AndroidPreferredInstallLocation: 1
|
||||||
aotOptions:
|
aotOptions:
|
||||||
|
@ -171,10 +180,10 @@ PlayerSettings:
|
||||||
StripUnusedMeshComponents: 1
|
StripUnusedMeshComponents: 1
|
||||||
VertexChannelCompressionMask: 4054
|
VertexChannelCompressionMask: 4054
|
||||||
iPhoneSdkVersion: 988
|
iPhoneSdkVersion: 988
|
||||||
iOSTargetOSVersionString: 9.0
|
iOSTargetOSVersionString: 10.0
|
||||||
tvOSSdkVersion: 0
|
tvOSSdkVersion: 0
|
||||||
tvOSRequireExtendedGameController: 0
|
tvOSRequireExtendedGameController: 0
|
||||||
tvOSTargetOSVersionString: 9.0
|
tvOSTargetOSVersionString: 10.0
|
||||||
uIPrerenderedIcon: 0
|
uIPrerenderedIcon: 0
|
||||||
uIRequiresPersistentWiFi: 0
|
uIRequiresPersistentWiFi: 0
|
||||||
uIRequiresFullScreen: 1
|
uIRequiresFullScreen: 1
|
||||||
|
@ -193,6 +202,10 @@ PlayerSettings:
|
||||||
iPadHighResPortraitSplashScreen: {fileID: 0}
|
iPadHighResPortraitSplashScreen: {fileID: 0}
|
||||||
iPadLandscapeSplashScreen: {fileID: 0}
|
iPadLandscapeSplashScreen: {fileID: 0}
|
||||||
iPadHighResLandscapeSplashScreen: {fileID: 0}
|
iPadHighResLandscapeSplashScreen: {fileID: 0}
|
||||||
|
iPhone65inPortraitSplashScreen: {fileID: 0}
|
||||||
|
iPhone65inLandscapeSplashScreen: {fileID: 0}
|
||||||
|
iPhone61inPortraitSplashScreen: {fileID: 0}
|
||||||
|
iPhone61inLandscapeSplashScreen: {fileID: 0}
|
||||||
appleTVSplashScreen: {fileID: 0}
|
appleTVSplashScreen: {fileID: 0}
|
||||||
appleTVSplashScreen2x: {fileID: 0}
|
appleTVSplashScreen2x: {fileID: 0}
|
||||||
tvOSSmallIconLayers: []
|
tvOSSmallIconLayers: []
|
||||||
|
@ -244,7 +257,7 @@ PlayerSettings:
|
||||||
AndroidTargetArchitectures: 7
|
AndroidTargetArchitectures: 7
|
||||||
AndroidSplashScreenScale: 0
|
AndroidSplashScreenScale: 0
|
||||||
androidSplashScreen: {fileID: 0}
|
androidSplashScreen: {fileID: 0}
|
||||||
AndroidKeystoreName:
|
AndroidKeystoreName: '{inproject}: '
|
||||||
AndroidKeyaliasName:
|
AndroidKeyaliasName:
|
||||||
AndroidBuildApkPerCpuArchitecture: 0
|
AndroidBuildApkPerCpuArchitecture: 0
|
||||||
AndroidTVCompatibility: 1
|
AndroidTVCompatibility: 1
|
||||||
|
@ -252,12 +265,14 @@ PlayerSettings:
|
||||||
AndroidEnableTango: 0
|
AndroidEnableTango: 0
|
||||||
androidEnableBanner: 1
|
androidEnableBanner: 1
|
||||||
androidUseLowAccuracyLocation: 0
|
androidUseLowAccuracyLocation: 0
|
||||||
|
androidUseCustomKeystore: 0
|
||||||
m_AndroidBanners:
|
m_AndroidBanners:
|
||||||
- width: 320
|
- width: 320
|
||||||
height: 180
|
height: 180
|
||||||
banner: {fileID: 0}
|
banner: {fileID: 0}
|
||||||
androidGamepadSupportLevel: 0
|
androidGamepadSupportLevel: 0
|
||||||
resolutionDialogBanner: {fileID: 0}
|
AndroidValidateAppBundleSize: 1
|
||||||
|
AndroidAppBundleSizeToValidate: 150
|
||||||
m_BuildTargetIcons: []
|
m_BuildTargetIcons: []
|
||||||
m_BuildTargetPlatformIcons:
|
m_BuildTargetPlatformIcons:
|
||||||
- m_BuildTarget: Android
|
- m_BuildTarget: Android
|
||||||
|
@ -465,12 +480,44 @@ PlayerSettings:
|
||||||
- m_BuildTarget: WebGL
|
- m_BuildTarget: WebGL
|
||||||
m_StaticBatching: 0
|
m_StaticBatching: 0
|
||||||
m_DynamicBatching: 0
|
m_DynamicBatching: 0
|
||||||
|
m_BuildTargetGraphicsJobs:
|
||||||
|
- m_BuildTarget: MacStandaloneSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: Switch
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: MetroSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: AppleTVSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: BJMSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: LinuxStandaloneSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: PS4Player
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: iOSSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: WindowsStandaloneSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: XboxOnePlayer
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: LuminSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: AndroidPlayer
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: WebGLSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
m_BuildTargetGraphicsJobMode:
|
||||||
|
- m_BuildTarget: PS4Player
|
||||||
|
m_GraphicsJobMode: 0
|
||||||
|
- m_BuildTarget: XboxOnePlayer
|
||||||
|
m_GraphicsJobMode: 0
|
||||||
m_BuildTargetGraphicsAPIs:
|
m_BuildTargetGraphicsAPIs:
|
||||||
- m_BuildTarget: AndroidPlayer
|
- m_BuildTarget: AndroidPlayer
|
||||||
m_APIs: 0b00000008000000
|
m_APIs: 0b00000008000000
|
||||||
m_Automatic: 0
|
m_Automatic: 0
|
||||||
- m_BuildTarget: iOSSupport
|
- m_BuildTarget: iOSSupport
|
||||||
m_APIs: 0b00000008000000
|
m_APIs: 10000000
|
||||||
m_Automatic: 0
|
m_Automatic: 0
|
||||||
- m_BuildTarget: AppleTVSupport
|
- m_BuildTarget: AppleTVSupport
|
||||||
m_APIs: 10000000
|
m_APIs: 10000000
|
||||||
|
@ -484,9 +531,10 @@ PlayerSettings:
|
||||||
m_Devices:
|
m_Devices:
|
||||||
- Oculus
|
- Oculus
|
||||||
- OpenVR
|
- OpenVR
|
||||||
m_BuildTargetEnableVuforiaSettings: []
|
|
||||||
openGLRequireES31: 0
|
openGLRequireES31: 0
|
||||||
openGLRequireES31AEP: 0
|
openGLRequireES31AEP: 0
|
||||||
|
openGLRequireES32: 0
|
||||||
|
vuforiaEnabled: 0
|
||||||
m_TemplateCustomTags: {}
|
m_TemplateCustomTags: {}
|
||||||
mobileMTRendering:
|
mobileMTRendering:
|
||||||
Android: 1
|
Android: 1
|
||||||
|
@ -670,6 +718,7 @@ PlayerSettings:
|
||||||
ps4DownloadDataSize: 0
|
ps4DownloadDataSize: 0
|
||||||
ps4GarlicHeapSize: 2048
|
ps4GarlicHeapSize: 2048
|
||||||
ps4ProGarlicHeapSize: 2560
|
ps4ProGarlicHeapSize: 2560
|
||||||
|
playerPrefsMaxSize: 32768
|
||||||
ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
|
ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
|
||||||
ps4pnSessions: 1
|
ps4pnSessions: 1
|
||||||
ps4pnPresence: 1
|
ps4pnPresence: 1
|
||||||
|
@ -700,9 +749,11 @@ PlayerSettings:
|
||||||
ps4contentSearchFeaturesUsed: 0
|
ps4contentSearchFeaturesUsed: 0
|
||||||
ps4attribEyeToEyeDistanceSettingVR: 0
|
ps4attribEyeToEyeDistanceSettingVR: 0
|
||||||
ps4IncludedModules: []
|
ps4IncludedModules: []
|
||||||
|
ps4attribVROutputEnabled: 0
|
||||||
monoEnv:
|
monoEnv:
|
||||||
splashScreenBackgroundSourceLandscape: {fileID: 0}
|
splashScreenBackgroundSourceLandscape: {fileID: 0}
|
||||||
splashScreenBackgroundSourcePortrait: {fileID: 0}
|
splashScreenBackgroundSourcePortrait: {fileID: 0}
|
||||||
|
blurSplashScreenBackground: 1
|
||||||
spritePackerPolicy:
|
spritePackerPolicy:
|
||||||
webGLMemorySize: 256
|
webGLMemorySize: 256
|
||||||
webGLExceptionSupport: 1
|
webGLExceptionSupport: 1
|
||||||
|
@ -717,6 +768,7 @@ PlayerSettings:
|
||||||
webGLCompressionFormat: 1
|
webGLCompressionFormat: 1
|
||||||
webGLLinkerTarget: 1
|
webGLLinkerTarget: 1
|
||||||
webGLThreadsSupport: 0
|
webGLThreadsSupport: 0
|
||||||
|
webGLWasmStreaming: 0
|
||||||
scriptingDefineSymbols: {}
|
scriptingDefineSymbols: {}
|
||||||
platformArchitecture: {}
|
platformArchitecture: {}
|
||||||
scriptingBackend:
|
scriptingBackend:
|
||||||
|
@ -727,6 +779,8 @@ PlayerSettings:
|
||||||
allowUnsafeCode: 0
|
allowUnsafeCode: 0
|
||||||
additionalIl2CppArgs:
|
additionalIl2CppArgs:
|
||||||
scriptingRuntimeVersion: 1
|
scriptingRuntimeVersion: 1
|
||||||
|
gcIncremental: 0
|
||||||
|
gcWBarrierValidation: 0
|
||||||
apiCompatibilityLevelPerPlatform: {}
|
apiCompatibilityLevelPerPlatform: {}
|
||||||
m_RenderingPath: 1
|
m_RenderingPath: 1
|
||||||
m_MobileRenderingPath: 1
|
m_MobileRenderingPath: 1
|
||||||
|
@ -757,7 +811,6 @@ PlayerSettings:
|
||||||
metroFTAName:
|
metroFTAName:
|
||||||
metroFTAFileTypes: []
|
metroFTAFileTypes: []
|
||||||
metroProtocolName:
|
metroProtocolName:
|
||||||
metroCompilationOverrides: 1
|
|
||||||
XboxOneProductId:
|
XboxOneProductId:
|
||||||
XboxOneUpdateKey:
|
XboxOneUpdateKey:
|
||||||
XboxOneSandboxId:
|
XboxOneSandboxId:
|
||||||
|
@ -782,7 +835,6 @@ PlayerSettings:
|
||||||
XboxOneAllowedProductIds: []
|
XboxOneAllowedProductIds: []
|
||||||
XboxOnePersistentLocalStorageSize: 0
|
XboxOnePersistentLocalStorageSize: 0
|
||||||
XboxOneXTitleMemory: 8
|
XboxOneXTitleMemory: 8
|
||||||
xboxOneScriptCompiler: 1
|
|
||||||
XboxOneOverrideIdentityName:
|
XboxOneOverrideIdentityName:
|
||||||
vrEditorSettings:
|
vrEditorSettings:
|
||||||
daydream:
|
daydream:
|
||||||
|
@ -796,18 +848,11 @@ PlayerSettings:
|
||||||
m_PortalFolderPath:
|
m_PortalFolderPath:
|
||||||
luminCert:
|
luminCert:
|
||||||
m_CertPath:
|
m_CertPath:
|
||||||
m_PrivateKeyPath:
|
m_SignPackage: 1
|
||||||
luminIsChannelApp: 0
|
luminIsChannelApp: 0
|
||||||
luminVersion:
|
luminVersion:
|
||||||
m_VersionCode: 1
|
m_VersionCode: 1
|
||||||
m_VersionName:
|
m_VersionName:
|
||||||
facebookSdkVersion: 7.9.4
|
|
||||||
facebookAppId:
|
|
||||||
facebookCookies: 1
|
|
||||||
facebookLogging: 1
|
|
||||||
facebookStatus: 1
|
|
||||||
facebookXfbml: 0
|
|
||||||
facebookFrictionlessRequests: 1
|
|
||||||
apiCompatibilityLevel: 6
|
apiCompatibilityLevel: 6
|
||||||
cloudProjectId: 8d747fa2-16cc-437c-9ae7-de9820958d80
|
cloudProjectId: 8d747fa2-16cc-437c-9ae7-de9820958d80
|
||||||
framebufferDepthMemorylessMode: 0
|
framebufferDepthMemorylessMode: 0
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
m_EditorVersion: 2018.3.9f1
|
m_EditorVersion: 2019.3.0b7
|
||||||
|
m_EditorVersionWithRevision: 2019.3.0b7 (9946d7a66754)
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"m_SettingKeys": [
|
||||||
|
"VR Device Disabled",
|
||||||
|
"VR Device User Alert"
|
||||||
|
],
|
||||||
|
"m_SettingValues": [
|
||||||
|
"False",
|
||||||
|
"False"
|
||||||
|
]
|
||||||
|
}
|
|
@ -122,9 +122,41 @@ public static class XcodePostBuild
|
||||||
{
|
{
|
||||||
var inScope = false;
|
var inScope = false;
|
||||||
var markerDetected = false;
|
var markerDetected = false;
|
||||||
|
|
||||||
// Add static GetAppController
|
// Modify inline GetAppController
|
||||||
EditCodeFile(path, line =>
|
EditCodeFile(path, line =>
|
||||||
|
{
|
||||||
|
inScope |= line.Contains("include \"RenderPluginDelegate.h\"");
|
||||||
|
|
||||||
|
if (inScope && !markerDetected)
|
||||||
|
{
|
||||||
|
if (line.Trim() == "")
|
||||||
|
{
|
||||||
|
inScope = false;
|
||||||
|
markerDetected = true;
|
||||||
|
|
||||||
|
return new string[]
|
||||||
|
{
|
||||||
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"@protocol UnityEventListener <NSObject>",
|
||||||
|
"- (void)onMessage:(NSString *)message;",
|
||||||
|
"@end",
|
||||||
|
"",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return new string[] { line };
|
||||||
|
}
|
||||||
|
|
||||||
|
return new string[] { line };
|
||||||
|
});
|
||||||
|
|
||||||
|
inScope = false;
|
||||||
|
markerDetected = false;
|
||||||
|
|
||||||
|
// Add static GetAppController
|
||||||
|
EditCodeFile(path, line =>
|
||||||
{
|
{
|
||||||
inScope |= line.Contains("- (void)startUnity:");
|
inScope |= line.Contains("- (void)startUnity:");
|
||||||
|
|
||||||
|
@ -139,7 +171,9 @@ public static class XcodePostBuild
|
||||||
"",
|
"",
|
||||||
"// Added by " + TouchedMarker,
|
"// Added by " + TouchedMarker,
|
||||||
"+ (UnityAppController*)GetAppController;",
|
"+ (UnityAppController*)GetAppController;",
|
||||||
""
|
"+ (void)addUnityEventListenerInternal:(id<UnityEventListener>)listener;",
|
||||||
|
"+ (void)removeUnityEventListenerInternal:(id<UnityEventListener>)listener;",
|
||||||
|
""
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,10 +200,23 @@ public static class XcodePostBuild
|
||||||
{
|
{
|
||||||
"// }",
|
"// }",
|
||||||
"",
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
"static inline UnityAppController* GetAppController()",
|
"static inline UnityAppController* GetAppController()",
|
||||||
"{",
|
"{",
|
||||||
" return [UnityAppController GetAppController];",
|
" return [UnityAppController GetAppController];",
|
||||||
"}",
|
"}",
|
||||||
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"static inline void addUnityEventListenerInternal(id<UnityEventListener> listener)",
|
||||||
|
"{",
|
||||||
|
" [UnityAppController addUnityEventListenerInternal: listener];",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"static inline void removeUnityEventListenerInternal(id<UnityEventListener> listener)",
|
||||||
|
"{",
|
||||||
|
" [UnityAppController removeUnityEventListenerInternal:listener];",
|
||||||
|
"}"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -209,7 +256,26 @@ public static class XcodePostBuild
|
||||||
" return unityAppController;",
|
" return unityAppController;",
|
||||||
"}",
|
"}",
|
||||||
"",
|
"",
|
||||||
line,
|
"// Added by " + TouchedMarker,
|
||||||
|
"static NSHashTable* mUnityEventListeners = [NSHashTable weakObjectsHashTable];",
|
||||||
|
"+ (void)addUnityEventListener2:(id<UnityEventListener>)listener",
|
||||||
|
"{",
|
||||||
|
" [mUnityEventListeners addObject: listener];",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"+(void)removeUnityEventListener2:(id<UnityEventListener>)listener",
|
||||||
|
"{",
|
||||||
|
" [mUnityEventListeners removeObject: listener];",
|
||||||
|
"}",
|
||||||
|
line,
|
||||||
|
"// Added by " + TouchedMarker,
|
||||||
|
"extern \"C\" void onUnityMessage(const char* message)",
|
||||||
|
"{",
|
||||||
|
" for (id<UnityEventListener> listener in mUnityEventListeners) {",
|
||||||
|
" [listener onMessage:[NSString stringWithUTF8String:message]];",
|
||||||
|
" }",
|
||||||
|
"}",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue