unityintermediate goods什么意思

本视频教程是由cgcookie机构出品的Unity光照贴图技术训练视频教程,UnityCookie Unity Crash Course Breakout Lightmapping in Unity,大小:600 MB,格式:MP4视频格式,附工程源文件,教程使用软件:Unity,作者:Wes McDermott,语言:英语。Unity3D是一个让你轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎。Unity代表了一个质的飞跃——内置的光照贴图(lightmapping)、遮挡剔除(occlusion culling)和调试器。编辑器经过彻底革新,让你可以获得卓越的性能体验。不可思议、无法阻挡的产品已经看到了曙光。Unity是一款跨平台的游戏开发工具,从一开始就被设计成易于使用的产品。作为一个完全集成的专业级应用,Unity还包含了价值数百万美元的功能强大的游戏引擎。Unity 4作为一个游戏开发工具,它的设计主旨就是让你能够创建令人惊讶的游戏。如果你之前尝试过Unity,请查看Unity 3都做了哪些更新。如果你是第一次尝试,那就好好看看吧,看Unity都能为你带来什么。Unity作为一种开发环境,可让你脱离传统的游戏开发方式,以一种更简单的方式专注于你的游戏开发。开发网络游戏、移动游戏、单机游戏,Unity都能完全胜任。UnityCookie Unity Crash Course Breakout Lightmapping in UnityIntermediate | 600 MB | Project Files: Included | Software used: UnityIn this Course Breakout session, we are going to take a look at lightmapping. Unity has a fully integrated lightmapping system called Beast (Autodesk). Beast is very powerful and easy to use. It’s provides a great toolset for lightmapping and the fact that it’s totally integrated into the Unity Editor makes lightmapping a snap.
-----------------------------------------------------------------
资源名称: Unity光照贴图技术训练视频教程
本站编号:&&VX1784
百度网盘1:百度网盘3:百度网盘5:城通网盘:
解压密码:&&
更多的信息: 待补充
如果下载地址失效,请发邮件到 项目开发笔记 (七)
很多APP中都会有个人信息,或者个人帐号 都会有设置头像功能,国内的很多APP更加是如此(很多人的帐号密码泄密,正是由于到处注册帐号,举个我当年密码泄漏的例子,在很多年的某一天 我在某个网吧的嘟嘟牛系统注册了一个帐号,当时毫无安全意识,直接用个人密码作为嘟嘟牛的密码,很多年后的今天 我在嘟嘟牛的用户数据库里找到了我当年的个人所有信息…嘟嘟牛的数据库怎么会流出来?A.黑客把嘟嘟牛黑掉,把数据库拿到地下交易市场卖,B.嘟嘟牛的某个数据库程序员离职 顺带把数据库带出来,C.公司倒闭,倒卖数据榨干最后一点价值等等..),言归正传,目前我在参与一个类APP项目的优化工作.使用Unity开发.也有这种..设置用户头像的需求
Unity Version: 5.x or 4.x
本文内容非纯干货,如果不想看可以直接下载Sample –
难点主要在几个地方:
Unity与iOS/Android原生代码之间的调用
iOS/Android 对摄像机的调用与图片截取
iOS/Android 对图片的IO操作
Unity与iOS/Android原生代码之间的调用
Unity对原生的调用支持相对还是很好的.也非常简单.
对于Android
主要的方法是通过获取主Activity对象,然后调用主Activity中的pubilc信息,举个栗子
AndroidJavaClass androidActivityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
m_NativeObj = androidActivityClass.GetStatic("currentActivity");
m_NativeObj.Call(
"SettingAvaterFormMobile",
// Java函数名
strObjectName,
// 传入的参数
strFuncName,
// 传入的参数
strFileName);
// 传入的参数
上面即调用主Activity上的SettingAvaterFormMobile函数.
Android原生代码要给Unity调用 还需要配置一些基本内容:
1.在Android项目的生成文件夹bin下命令行生成Jar包
在确认Android项目代码无误的情况下,到项目目录bin\classes下,打开命令行定位到这里,然后使用命令生成jar文件
jar -cvf xxx.jar * // xxx为文件名 可随意设置
2.Android项目需要取得原生jar包放到Unity项目文件夹Assets\Plugins\Android\bin目录(没有就自行创建) ,再取 AndroidManifest.xml,res文件夹 ,放到 Assets\Plugins\Android文件夹下.如图:
3.对于Android项目源码包的获取,Unity4.x 和 5.x方法不一样,如果是Unity5 需要把项目目录bin\classes下编译的R.java生成文件删掉.
由于iOS开发可以OC与C/C++之间无缝调用,所以其实调用iOS原生函数 是通过调用C/C++函数中转的.方法非常简单.在C#脚本端声明一个C++函数,即可直接调用:
//-------------------------------------------------------------------------
[DllImport("__Internal")]
private static extern
void SettingAvaterFormiOS(string strObjectName, string strFuncName, string strFileName);
//-------------------------------------------------------------------------
#elif UNITY_IPHONE
SettingAvaterFormiOS(strObjectName, strFuncName, strFileName);
//-------------------------------------------------------------------------
若需要调用一个Android项目的NDK开发的C++函数,原理也是一样的.
iOS原生代码要给Unity调用 还需要配置一些基本内容:
把自行编写的iOS代码复制到Unity项目文件夹文件夹Assets\Plugins\IOS\下(没有就自行创建),如图
iOS/Android 对摄像机的调用与图片截取
对于Andorid
Android打开照相机和打开相册选取照片非常简单,网上代码一吨:
// 打开摄像机获取图片
if(v.getId() == m_OpenCameraID)
eResult = CommonUtil.ENUM_RESULT.eResult_C
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(
MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(Environment.getExternalStorageDirectory(), m_ImageFileName)));
m_contextAct.startActivityForResult(intent, eResult.ordinal());
// 打开相册选取图片
else if(v.getId() == m_GetPictureID)
eResult = CommonUtil.ENUM_RESULT.eResult_P
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);
m_contextAct.startActivityForResult(intent, eResult.ordinal());
iOS打开照相机和打开相册选取照片非常简单,网上代码也一吨:
//-------------------------------------------------------------------------
// 关键实现
- (void)showPicker:(UIImagePickerControllerSourceType)type
UIImagePickerController *picker = [[[UIImagePickerController alloc] init] autorelease];
picker.delegate =
picker.sourceType =
// 打开摄像机或者打开相册
picker.allowsEditing = YES;// 图片是否可编辑
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
Class popoverClass = NSClassFromString( @"UIPopoverController" );
if( !popoverClass )
_popoverViewController = [[popoverClass alloc] initWithContentViewController:picker];
[_popoverViewController setDelegate:self];
[_popoverViewController presentPopoverFromRect:CGRectMake( 0, 0, 128, 128 )
inView:UnityGetGLViewController().view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
UIViewController *vc = UnityGetGLViewController();
[vc presentModalViewController:picker animated:YES];
//-------------------------------------------------------------------------
iOS/Android 对图片的IO操作
获取的图片文件,可大可小,我们不能直接传string回Unity,所以可以事先保存到本地目录下.最佳的目录是Application.persistentDataPath.
对于Android
这个目录就是:"/mnt/sdcard/Android/data/" + packageID + "/files".(packageID为APP包名)保存图片文件代码片段:
FileOutputStream fOut =
String strPackgeName = getApplicationInfo().packageN
String path = "/mnt/sdcard/Android/data/" + strPackgeName + "/files";
File destDir = new File(path);
if (!destDir.exists())
destDir.mkdirs();
fOut = new FileOutputStream(path + "/" + m_ImageFileName) ;
catch (FileNotFoundException e)
e.printStackTrace();
photo.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
catch (IOException e)
e.printStackTrace();
fOut.close();
catch (IOException e)
e.printStackTrace();
这个目录就是:Application/packageID/Documents.(packageID为APP包名)
NSString * DocumentsPath =
[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSFileManager *fileManager =
[NSFileManager defaultManager];
[fileManager createDirectoryAtPath:DocumentsPath
withIntermediateDirectories:YES
attributes:nil
error:nil];
[fileManager createFileAtPath:[DocumentsPath stringByAppendingString:m_pstrFileName]
contents:imgData attributes:nil];
如此获取的图片就保存到了指定的目录中.这个时候只要告诉回调到Unity通知一下 即可.
设置了用户头像,一般都会有上传头像到服务器的功能,关于C#上传图片到服务器网上也也有一吨的版本,但是Unity官方文档中的是如下:
//-------------------------------------------------------------------------
IEnumerator __UploadPNG()
var bytes = m_texture2D.EncodeToPNG();
var form = new WWWForm();
form.AddField("frameCount", Time.frameCount.ToString());
form.AddBinaryData("avatarPicture", bytes, "avatar.png", "image/png");
// m_ImageUpDownURL URL上传接口
var w = new WWW(m_ImageUpDownURL, form);
if (!string.IsNullOrEmpty(w.error))
Debug.Log(w.error);
Debug.Log("Finished Uploading Image");
//-------------------------------------------------------------------------拒绝访问 | www.th7.cn | 百度云加速
请打开cookies.
此网站 (www.th7.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(40c11d54e2c5438e-ua98).
重新安装浏览器,或使用别的浏览器}

我要回帖

更多关于 intermediate python 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信