1、加import System.IO; //(JS写的)
2、定义如下变量:
private var fileName1 : String;
private var fs1 : FileStream;
private var sr1: StreamReader;
3、Start方法:
function Start () {
// fileName1 = Application.dataPath + "/Resource/" + "test.txt"; // pc test path fileName1 = ChorusBinding.libraryPath() + "/test.txt";//iphone真机路径
fs1 = new FileStream(fileName1, FileMode.Open); sr1 = new StreamReader(fs1);
//这里我做了一些操作,如读txt中的某一行LineStringInOneFile(2);//读第二行的文字
... //省略若干行
fs1.Close();//关闭文件,这个不要忘记,以免出现内存问题
}
说明:ChorusBinding.libraryPath()方法是用objective-c写的获取library目录。oc代码如下:
-(NSString *)GetLibraryPathToString
{
// NSFileManager *fileManager = [NSFileManager defaultManager];
// NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [paths objectAtIndex:0];
return libraryDirectory;
}
4、 对于调用OC的方法,在unity3d中用[DllImport("__Internal")],具体代码见下面(C#写的)
[DllImport("__Internal")]
private static extern void _copyModelConfigFiles();
public static void copyModelConfigFiles() {
_copyModelConfigFiles();
}
5、读txt
//获得txt文件的总行数
function ReadFile(filepathIncludingFileName : String) {
var sr: StreamReader = new File.OpenText(filepathIncludingFileName);
var input : String = ""; //读到的那一行的字符串
var lineCount : int = 0;//总行数
while (true) {
input = sr.ReadLine();
if (input == null) { break; }
lineCount++;
}
sr.Close();
}
//返回某一行的字符串,i为传的行数,是第一个配置文件test.txt
function LineStringInOneFile(i:int) {
var lineContent : String="";
var tempLine : int = 0;
while(tempLine<i+1) {
sr1.BaseStream.Seek(0, SeekOrigin.Begin);//重新读取第一行
lineContent = sr1.ReadLine();
if (lineContent == null) { break; }
tempLine ++;
}
sr1.ReadToEnd();
return lineContent;
}
//上面方法中定义的变量应该能一眼就看出是什么类型,就不贴整个类上去了,我是从项目中拷出来的