只有你有其u3d原文件(工程),才可以在u3d中打开,如果你只有其游戏,用u3d是无法打开的。 如果是有源文件,想导出模型,可以写一段脚本,把unity中的物体转换为obj格式,之后再将obj格式转换为fbx格式,这个脚本需要将物体的顶点、三角形,uv
assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
assets的读取方式:
1 先在Activity里面调用getAssets() 来获取AssetManager引用。
2 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。
3 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStreamclose() 。
4调用AssetManagerclose() 关闭AssetManager。
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的 *** 作
assets文件夹是android程序中存放相关外部文件的一个目录,Android官方提供了相应的方法去访问该文件夹中的内容,故此我们并不需要进行相关的路径判断等代码 *** 作,直接调用相关方法打开文件并得到一个字节输入流(InputStream);
然后通过相应的字符编码方式读取字节解码为字符输入流(InputStreamReader);再通过BufferReader对字符输入流读取文本并将字符存入缓冲区以便能提供字符、数组和线段的高效读取;最后我们就能逐行对文件内容进行读取了;
public class MainActivity extends Activity {
一 前言
最近自己写一个程序,需要把文本文件里面的一些数据在程序第一次启动的时候初始化到数据库中去。所以就涉及到了读取文件的 *** 作。在我们android项目里面,有个assets文件夹,就是用来存储资源文件的,可以通过AssetManager访问。本来以为这是一件三只手指抓田螺--十拿九稳的事情,结果还是花了自己一个小时来调试它,就是读取文件出现了乱码。出现这种东西 "��1��0��0��0��1��",有些问号在里面。。
二 解决办法
后来在网上找了些资料看了下,说是要把文本文件保存成UTF-8类型才可以。试了下,果然ok下面分享下自己这块功能的代码
三 代码
1 文本文件内容格式:
复制内容到剪贴板
代码:
13076-5 2 0 9 5 0 1
13075-9 5 6 8 4 3 3
13074-2 0 4 0 2 8 8
13073-8 8 6 6 0 7 8
13072-2 0 8 8 6 3 5
大概就是这种格式,我需要对它们每行都进行解析,比如第一行解析成 13076 5 2 0 9 5 0 1 ,也就是8个数字,然后存入数据库里面分别对应的8列
2 主要代码
这里的话,自己新建了一个MyDbOpenHelper,然后重写了onCreate方法,这个方法会在我们第一次调用dbgetReadDatabase()或者getWriteDataBase()方法时调用,而且只会调用一次。就是程序第一次启动的时候。
ok在onCreate方法里面,主要代码的功能已经注释,大家可以自己看。。private static class MyDbOpenHelper extends SQLiteOpenHelper{
private Context c;
public MyDbOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
c = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
Logd("Sandy", "onCreate database");
//execute when user invoke getReadDatabase/getWriteDatabase
//当用户第一次程序的时候,我们会调用这里,创建我们的表。
dbexecSQL("CREATE TABLE " + RAW_DATA_TABLE + " ("
+ RawData_ID + " INTEGER PRIMARY KEY,"
+ RawDataCOLUMN_ISSUE + " TEXT,"
+ RawDataCOLUMN_NUMBER_ONE + " TEXT,"
+ RawDataCOLUMN_NUMBER_TWO + " TEXT , "
+ RawDataCOLUMN_NUMBER_THREE + " TEXT,"
+ RawDataCOLUMN_NUMBER_FOUR + " TEXT,"
+ RawDataCOLUMN_NUMBER_FIVE + " TEXT,"
+ RawDataCOLUMN_NUMBER_SIX + " TEXT,"
+ RawDataCOLUMN_NUMBER_SEVEN + " TEXT"
+ ");");
ContentValues cv = new ContentValues();
//声明解析文件的文件流对象
InputStream in = null;
BufferedReader reader = null;
try {
//通过AssetManager读取文件
in = cgetResources()getAssets()open("qixingcai-datatxt", AssetManagerACCESS_BUFFER);
//构造BufferedReader对象,以便逐行读取
reader = new BufferedReader(new InputStreamReader(in));
String line ;
//逐行读取文件内容,读取一行,就把这一行数据进行拆分,然后保存进数据库
while((line = readerreadLine()) != null){
cvclear();
//根据分割符"-"和" "进行数据拆分,然后把得到的数据放到ContentValues对象中
String[] issueAndNumber = linesplit("-");
String[] numbers = issueAndNumber[1]split(" ");
cvput(RawDataCOLUMN_ISSUE, issueAndNumber[0]);
cvput(RawDataCOLUMN_NUMBER_ONE, numbers[0]);
cvput(RawDataCOLUMN_NUMBER_TWO, numbers[1]);
cvput(RawDataCOLUMN_NUMBER_THREE, numbers[2]);
cvput(RawDataCOLUMN_NUMBER_FOUR, numbers[3]);
cvput(RawDataCOLUMN_NUMBER_FIVE, numbers[4]);
cvput(RawDataCOLUMN_NUMBER_SIX, numbers[5]);
cvput(RawDataCOLUMN_NUMBER_SEVEN, numbers[6]);
//插入数据库
dbinsert(RAW_DATA_TABLE, "_id", cv);
Logd("Sandy", "issueAndNumber[0]" + issueAndNumber[0]
+ "one: " + numbers[0] + " all: " + issueAndNumber[1]);
}
} catch (IOException e) {
Logd("Sandy", "", e);
}finally{
if (in != null){
try {
inclose();
} catch (IOException e) {
eprintStackTrace();
}
}
if (reader != null){
try {
readerclose();
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
}
我是用usb连手机测试的,估计是手机上运行只有apk,并没有产生assets文件夹现在我是直接读取拷贝到sd卡上的数据,路径是/mnt/sdcard/xxxjpg 详情回复发表于 2013-8-12 20:5
可以通过这个方法来找到是否有你要的那个文件: String[] list = null; list = getResources()getAssets()list("abc"); 它返回的是在assets文件夹下abc文件夹中文件的文件名的列表。再去检查list中是否有你需要的文件。
以上就是关于怎么提取U3D游戏的assets文件全部的内容,包括:怎么提取U3D游戏的assets文件、如何获取android 下的StreamingAssets文件夹中的xml文件、如何获取android assets文件下的mp4等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)